@notionhq/client 5.29.0 → 5.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/build/package.json +22 -14
- package/build/src/Client.d.ts +3 -5
- package/build/src/Client.d.ts.map +1 -1
- package/build/src/Client.js +0 -1
- package/build/src/Client.js.map +1 -1
- package/build/src/api-endpoint-methods.d.ts.map +1 -1
- package/build/src/api-endpoint-methods.js +34 -1
- package/build/src/api-endpoint-methods.js.map +1 -1
- package/build/src/api-endpoints/agents.d.ts.map +1 -1
- package/build/src/api-endpoints/agents.js.map +1 -1
- package/build/src/api-endpoints/blocks.d.ts.map +1 -1
- package/build/src/api-endpoints/blocks.js.map +1 -1
- package/build/src/api-endpoints/comments.d.ts.map +1 -1
- package/build/src/api-endpoints/comments.js.map +1 -1
- package/build/src/api-endpoints/common.d.ts.map +1 -1
- package/build/src/api-endpoints/common.js.map +1 -1
- package/build/src/api-endpoints/data-sources.d.ts.map +1 -1
- package/build/src/api-endpoints/data-sources.js.map +1 -1
- package/build/src/api-endpoints/databases.d.ts.map +1 -1
- package/build/src/api-endpoints/databases.js.map +1 -1
- package/build/src/api-endpoints/pages.d.ts.map +1 -1
- package/build/src/api-endpoints/pages.js.map +1 -1
- package/build/src/api-endpoints/views.d.ts.map +1 -1
- package/build/src/api-endpoints/views.js.map +1 -1
- package/build/src/errors.js.map +1 -1
- package/build/src/helpers.d.ts.map +1 -1
- package/build/src/helpers.js.map +1 -1
- package/build/src/index.d.ts +9 -5
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +4 -1
- package/build/src/index.js.map +1 -1
- package/build/src/meeting-notes.d.ts +3 -6
- package/build/src/meeting-notes.d.ts.map +1 -1
- package/build/src/meeting-notes.js +0 -27
- package/build/src/meeting-notes.js.map +1 -1
- package/build/src/webhooks.d.ts +1 -2
- package/build/src/webhooks.d.ts.map +1 -1
- package/build/src/webhooks.js +18 -58
- package/build/src/webhooks.js.map +1 -1
- package/package.json +22 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../../src/api-endpoints/views.ts"],"names":[],"mappings":";AAAA,sBAAsB;AACtB,+CAA+C;;;AAq0B/C;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,CAAC;IAC3E,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,GAAW,EAAE,CAAC,OAAO;CACnB,CAAA;AAUV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,GAAW,EAAE,CAAC,OAAO;CACnB,CAAA;AAaV;;GAEG;AACU,QAAA,OAAO,GAAG;IACrB,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAwB,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CACxD,CAAA;AAgBV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAA2B,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CAC3D,CAAA;AAWV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAA2B,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CAC3D,CAAA;AAcV;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAgC,EAAU,EAAE,CACjD,SAAS,CAAC,CAAC,OAAO,UAAU;CACtB,CAAA;AAgCV;;GAEG;AACU,QAAA,mBAAmB,GAAG;IACjC,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;IAC1C,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAoC,EAAU,EAAE,CACrD,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAA;AAaV;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAgC,EAAU,EAAE,CACjD,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAA","sourcesContent":["// cspell:disable-file\n// Note: This is a generated file. DO NOT EDIT!\n\nimport type {\n CreateViewQueryRequest,\n CreateViewRequest,\n DataSourceViewReferenceResponse,\n DatabaseParentResponse,\n EmptyObject,\n IdRequest,\n IdResponse,\n PartialPageObjectResponse,\n PartialUserObjectResponse,\n RequestStatusResponse,\n UpdateViewRequest,\n} from \"./common\"\n\ntype BoardViewConfigResponse = {\n // The view configuration type.\n type: \"board\"\n // Column (horizontal) grouping - required for board view.\n group_by: GroupByConfigResponse\n // Sub-grouping (vertical swimlanes within columns).\n sub_group_by?: GroupByConfigResponse\n // Properties to display on each card.\n properties?: Array<ViewPropertyConfigResponse>\n // Card cover/preview image configuration.\n cover?: CoverConfigResponse\n // Cover image size.\n cover_size?: \"small\" | \"medium\" | \"large\"\n // Cover image aspect ratio.\n cover_aspect?: \"contain\" | \"cover\"\n // Card layout mode (list shows all properties, compact shows inline).\n card_layout?: \"list\" | \"compact\"\n}\n\ntype CalendarViewConfigResponse = {\n // The view configuration type.\n type: \"calendar\"\n // Date property used to position items on the calendar - required.\n date_property_id: string\n // Date property name (convenience field).\n date_property_name?: string\n // Properties to display on calendar event cards.\n properties?: Array<ViewPropertyConfigResponse>\n // Calendar view range.\n view_range?: \"week\" | \"month\"\n // Whether to show weekend days.\n show_weekends?: boolean\n}\n\ntype ChartAggregationResponse = {\n // The aggregation operator. \"count\" counts all rows and does not require a property_id.\n // All other operators require a property_id.\n aggregator:\n | \"count\"\n | \"count_values\"\n | \"sum\"\n | \"average\"\n | \"median\"\n | \"min\"\n | \"max\"\n | \"range\"\n | \"unique\"\n | \"empty\"\n | \"not_empty\"\n | \"percent_empty\"\n | \"percent_not_empty\"\n | \"checked\"\n | \"unchecked\"\n | \"percent_checked\"\n | \"percent_unchecked\"\n | \"earliest_date\"\n | \"latest_date\"\n | \"date_range\"\n // The property to aggregate on. Required for all operators except \"count\".\n property_id?: string\n}\n\ntype ChartReferenceLineResponse = {\n // Unique identifier for the reference line.\n id: string\n // The y-axis value where the reference line is drawn.\n value: number\n // Label displayed alongside the reference line.\n label: string\n // Color of the reference line.\n color:\n | \"gray\"\n | \"lightgray\"\n | \"brown\"\n | \"yellow\"\n | \"orange\"\n | \"green\"\n | \"blue\"\n | \"purple\"\n | \"pink\"\n | \"red\"\n // Line style: \"solid\" for a continuous line, \"dash\" for a dashed line.\n dash_style: \"solid\" | \"dash\"\n}\n\ntype ChartViewConfigResponse = {\n // The view configuration type.\n type: \"chart\"\n // The chart type: column (vertical bars), bar (horizontal bars), line, donut, or number\n // (single value display).\n chart_type: \"column\" | \"bar\" | \"line\" | \"donut\" | \"number\"\n // X-axis grouping configuration for column/bar/line/donut charts using grouped data.\n // Null when using results (raw property values) mode.\n x_axis?: GroupByConfigResponse | null\n // Y-axis aggregation for column/bar/line/donut charts using grouped data. Null when\n // using results mode.\n y_axis?: ChartAggregationResponse | null\n // Property ID for the x-axis name values when using results (raw property values) mode.\n x_axis_property_id?: string\n // Property ID for the y-axis numeric values when using results (raw property values)\n // mode.\n y_axis_property_id?: string\n // Aggregation configuration for number charts (single value display).\n value?: ChartAggregationResponse\n // Sort order for chart data.\n sort?:\n | \"manual\"\n | \"x_ascending\"\n | \"x_descending\"\n | \"y_ascending\"\n | \"y_descending\"\n // Color theme for the chart.\n color_theme?:\n | \"gray\"\n | \"blue\"\n | \"yellow\"\n | \"green\"\n | \"purple\"\n | \"teal\"\n | \"orange\"\n | \"pink\"\n | \"red\"\n | \"auto\"\n | \"colorful\"\n // Chart height.\n height?: \"small\" | \"medium\" | \"large\" | \"extra_large\"\n // Whether to hide groups with no data on the x-axis.\n hide_empty_groups?: boolean\n // Legend display position. \"off\" hides the legend.\n legend_position?: \"off\" | \"bottom\" | \"side\"\n // Whether to show data value labels on chart elements.\n show_data_labels?: boolean\n // Which axis labels to display.\n axis_labels?: \"none\" | \"x_axis\" | \"y_axis\" | \"both\"\n // Which grid lines to display.\n grid_lines?: \"none\" | \"horizontal\" | \"vertical\" | \"both\"\n // Whether to show cumulative values (line charts only).\n cumulative?: boolean\n // Whether to use smooth curves (line charts only).\n smooth_line?: boolean\n // Whether to hide the shaded area under the line (line charts only).\n hide_line_fill_area?: boolean\n // How grouped/stacked bars are displayed. \"normal\" stacks values, \"percent\" normalizes\n // to 100%, \"side_by_side\" places bars next to each other.\n group_style?: \"normal\" | \"percent\" | \"side_by_side\"\n // Custom minimum value for the y-axis. Null clears the override.\n y_axis_min?: number | null\n // Custom maximum value for the y-axis. Null clears the override.\n y_axis_max?: number | null\n // What to display on donut chart slices.\n donut_labels?: \"none\" | \"value\" | \"name\" | \"name_and_value\"\n // Whether to hide the title label (number charts only).\n hide_title?: boolean\n // Stack-by grouping configuration for stacked/grouped bar charts (column/bar/line only).\n // Null when not stacked.\n stack_by?: GroupByConfigResponse | null\n // Reference lines drawn on the chart. Null when no reference lines are configured.\n reference_lines?: Array<ChartReferenceLineResponse> | null\n // Text caption displayed below the chart. Null when no caption is shown.\n caption?: string | null\n // Whether chart elements are colored by their numeric value (gradient coloring).\n color_by_value?: boolean\n}\n\ntype CheckboxGroupByConfigResponse = {\n // The property type for grouping.\n type: \"checkbox\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (only manual for checkbox).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype CoverConfigResponse = {\n // Source of the cover image.\n type: \"page_cover\" | \"page_content\" | \"page_content_first\" | \"property\"\n // Property ID when type is \"property\".\n property_id?: string\n}\n\nexport type DashboardRowResponse = {\n // The ID of this row module.\n id: string\n // The widget modules within this row.\n widgets: Array<DashboardWidgetResponse>\n // Fixed height of the row in pixels.\n height?: number\n}\n\ntype DashboardViewConfigResponse = {\n // The view configuration type.\n type: \"dashboard\"\n // The rows that make up the dashboard layout. Each row contains one or more widget\n // modules.\n rows: Array<DashboardRowResponse>\n}\n\nexport type DashboardWidgetResponse = {\n // The ID of this widget module.\n id: string\n // The ID of the collection view rendered by this widget.\n view_id: string\n // Width of the widget in a 12-column grid (1-12). 12 means full width.\n width?: number\n // The 0-based index of the row this widget belongs to. Widgets in the same row share the\n // same row_index.\n row_index?: number\n}\n\nexport type DataSourceViewObjectResponse = {\n // The object type name.\n object: \"view\"\n // The ID of the view.\n id: IdResponse\n // The parent database of the view.\n parent: DatabaseParentResponse\n // The name of the view.\n name: string\n // The view type.\n type:\n | \"table\"\n | \"board\"\n | \"list\"\n | \"calendar\"\n | \"timeline\"\n | \"gallery\"\n | \"form\"\n | \"chart\"\n | \"map\"\n | \"dashboard\"\n // The time when the view was created.\n created_time: string\n // The time when the view was last edited.\n last_edited_time: string\n // Canonical deep link to the view in Notion.\n url: string\n // The ID of the data source this view is scoped to, or null for dashboard views.\n data_source_id?: string | null\n // The user who created the view, or null if not available.\n created_by?: PartialUserObjectResponse | null\n // The user who last edited the view, or null if not available.\n last_edited_by?: PartialUserObjectResponse | null\n // The filter applied to this view (same shape as data source query filter).\n filter?: ViewFilterResponse | null\n // The sorts applied to this view (same shape as data source query sorts).\n sorts?: Array<ViewSortResponse> | null\n // Quick filters pinned to the view's filter bar. Keys are property IDs. Values are\n // filter conditions (same shape as a property filter without the property field). Null\n // when no quick filters are set.\n quick_filters?: Record<string, QuickFilterConditionResponse> | null\n // View presentation configuration.\n configuration?: ViewConfigResponse | null\n // For dashboard widget views, the ID of the parent dashboard view. Only present when\n // this view is a widget inside a dashboard.\n dashboard_view_id?: string\n}\n\ntype DateGroupByConfigResponse = {\n // The property type for grouping.\n type: \"date\" | \"created_time\" | \"last_edited_time\"\n // Property ID to group by.\n property_id: string\n // Granularity for date grouping.\n group_by: \"relative\" | \"day\" | \"week\" | \"month\" | \"year\"\n // Sort order for groups (no manual sort for dates).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n // Start day of week for week grouping (0 = Sunday, 1 = Monday).\n start_day_of_week?: 0 | 1\n}\n\nexport type DeletedViewQueryResponse = {\n // The object type.\n object: \"view_query\"\n // The ID of the deleted view query.\n id: IdResponse\n // Whether the view query was deleted.\n deleted: boolean\n}\n\ntype FormViewConfigResponse = {\n // The view configuration type.\n type: \"form\"\n // Whether the form is closed for submissions.\n is_form_closed?: boolean\n // Whether anonymous (non-logged-in) submissions are allowed.\n anonymous_submissions?: boolean\n // Permission level granted to the submitter on the created page after form submission.\n submission_permissions?:\n | \"none\"\n | \"comment_only\"\n | \"reader\"\n | \"read_and_write\"\n | \"editor\"\n}\n\ntype FormulaCheckboxSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"checkbox\"\n // Sort order for groups (only manual for checkbox).\n sort: GroupSortResponse\n}\n\ntype FormulaDateSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"date\"\n // Granularity for date grouping.\n group_by: \"relative\" | \"day\" | \"week\" | \"month\" | \"year\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Start day of week for week grouping (0 = Sunday, 1 = Monday).\n start_day_of_week?: 0 | 1\n}\n\ntype FormulaGroupByConfigResponse = {\n // The property type for grouping.\n type: \"formula\"\n // Property ID of the formula to group by.\n property_id: string\n // Sub-group-by configuration based on the formula result type.\n group_by: FormulaSubGroupByResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype FormulaNumberSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"number\"\n // Sort order for groups (ascending or descending only).\n sort: GroupSortResponse\n // Start of the range for number grouping buckets.\n range_start?: number\n // End of the range for number grouping buckets.\n range_end?: number\n // Size of each bucket in number grouping.\n range_size?: number\n}\n\n/**\n * Sub-group-by configuration for formula properties based on result type.\n */\ntype FormulaSubGroupByResponse =\n | FormulaDateSubGroupByResponse\n | FormulaTextSubGroupByResponse\n | FormulaNumberSubGroupByResponse\n | FormulaCheckboxSubGroupByResponse\n\ntype FormulaTextSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"text\"\n // How to group text values. \"exact\" = exact match, \"alphabet_prefix\" = first letter.\n group_by: \"exact\" | \"alphabet_prefix\"\n // Sort order for groups.\n sort: GroupSortResponse\n}\n\ntype GalleryViewConfigResponse = {\n // The view configuration type.\n type: \"gallery\"\n // Properties to display on gallery cards.\n properties?: Array<ViewPropertyConfigResponse>\n // Card cover/preview image configuration.\n cover?: CoverConfigResponse\n // Cover image size.\n cover_size?: \"small\" | \"medium\" | \"large\"\n // Cover image aspect ratio.\n cover_aspect?: \"contain\" | \"cover\"\n // Card layout mode (list shows all properties, compact shows inline).\n card_layout?: \"list\" | \"compact\"\n}\n\n/**\n * Group-by configuration based on property type.\n */\ntype GroupByConfigResponse =\n | SelectGroupByConfigResponse\n | StatusGroupByConfigResponse\n | PersonGroupByConfigResponse\n | RelationGroupByConfigResponse\n | DateGroupByConfigResponse\n | TextGroupByConfigResponse\n | NumberGroupByConfigResponse\n | CheckboxGroupByConfigResponse\n | FormulaGroupByConfigResponse\n\ntype GroupSortResponse = {\n // Sort direction for groups.\n type: \"manual\" | \"ascending\" | \"descending\"\n}\n\ntype ListViewConfigResponse = {\n // The view configuration type.\n type: \"list\"\n // Properties to display in list items.\n properties?: Array<ViewPropertyConfigResponse>\n}\n\ntype MapViewConfigResponse = {\n // The view configuration type.\n type: \"map\"\n // Map display height.\n height?: \"small\" | \"medium\" | \"large\" | \"extra_large\"\n // Property ID of the location property used to position items on the map.\n map_by?: string\n // Map-by property name (convenience field).\n map_by_property_name?: string\n // Properties to display on map pin cards.\n properties?: Array<ViewPropertyConfigResponse>\n}\n\ntype NumberGroupByConfigResponse = {\n // The property type for grouping.\n type: \"number\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (ascending or descending only).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n // Start of the range for number grouping buckets.\n range_start?: number\n // End of the range for number grouping buckets.\n range_end?: number\n // Size of each bucket in number grouping.\n range_size?: number\n}\n\ntype PageReferenceResponse = {\n // The object type.\n object: string\n // The object ID.\n id: IdResponse\n}\n\nexport type PartialDataSourceViewObjectResponse = {\n // The object type name.\n object: \"view\"\n // The ID of the view.\n id: IdResponse\n // The parent database of the view.\n parent: DatabaseParentResponse\n // The view type.\n type:\n | \"table\"\n | \"board\"\n | \"list\"\n | \"calendar\"\n | \"timeline\"\n | \"gallery\"\n | \"form\"\n | \"chart\"\n | \"map\"\n | \"dashboard\"\n}\n\ntype PersonGroupByConfigResponse = {\n // The property type for grouping.\n type: \"person\" | \"created_by\" | \"last_edited_by\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (only manual supported).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype PropertySortResponse = {\n // The name or ID of the property to sort by.\n property: string\n // Sort direction.\n direction: \"ascending\" | \"descending\"\n}\n\n/**\n * A property filter condition. Same shape as a property filter but without the\n * \"property\" field. For example: { \"select\": { \"equals\": \"High\" } }. An empty object\n * means the quick filter has no criteria yet.\n */\ntype QuickFilterConditionResponse = Record<string, never>\n\ntype RelationGroupByConfigResponse = {\n // The property type for grouping.\n type: \"relation\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype SelectGroupByConfigResponse = {\n // The property type for grouping.\n type: \"select\" | \"multi_select\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype StatusGroupByConfigResponse = {\n // The property type for grouping.\n type: \"status\"\n // Property ID to group by.\n property_id: string\n // How to group status values. \"group\" groups by status group (To Do/In Progress/Done),\n // \"option\" groups by individual option.\n group_by: \"group\" | \"option\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype SubtaskConfigResponse = {\n // Relation property ID used for parent-child nesting.\n property_id?: string\n // How sub-items are displayed. \"show\" renders hierarchically with toggles, \"hidden\"\n // shows parents with a count, \"flattened\" shows sub-items with a parent indicator,\n // \"disabled\" turns off sub-item rendering.\n display_mode?: \"show\" | \"hidden\" | \"flattened\" | \"disabled\"\n // Which items are included when filtering. \"parents\" includes parent items only,\n // \"parents_and_subitems\" includes both, \"subitems\" includes sub-items only.\n filter_scope?: \"parents\" | \"parents_and_subitems\" | \"subitems\"\n // Property ID of the column showing the sub-item expand/collapse toggle.\n toggle_column_id?: string\n}\n\ntype TableViewConfigResponse = {\n // The view configuration type.\n type: \"table\"\n // Columns/properties visible in the table view.\n properties?: Array<ViewPropertyConfigResponse>\n // Vertical (row) grouping configuration.\n group_by?: GroupByConfigResponse\n // Sub-item (subtask) display configuration.\n subtasks?: SubtaskConfigResponse\n // Whether to wrap cell content by default.\n wrap_cells?: boolean\n // Index of the last frozen column. Columns up to and including this index are frozen.\n frozen_column_index?: number\n // Whether to show vertical lines between columns.\n show_vertical_lines?: boolean\n}\n\ntype TextGroupByConfigResponse = {\n // The property type for grouping.\n type: \"text\" | \"title\" | \"url\" | \"email\" | \"phone_number\"\n // Property ID to group by.\n property_id: string\n // How to group text values. \"exact\" = exact match, \"alphabet_prefix\" = first letter.\n group_by: \"exact\" | \"alphabet_prefix\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype TimelineArrowsByResponse = {\n // Relation property ID used for dependency arrows.\n property_id?: string | null\n}\n\ntype TimelinePreferenceResponse = {\n // Zoom level for the timeline.\n zoom_level:\n | \"hours\"\n | \"day\"\n | \"week\"\n | \"bi_week\"\n | \"month\"\n | \"quarter\"\n | \"year\"\n | \"5_years\"\n // Center timestamp for the timeline view (Unix timestamp in ms).\n center_timestamp?: number\n}\n\ntype TimelineViewConfigResponse = {\n // The view configuration type.\n type: \"timeline\"\n // Start date property - required.\n date_property_id: string\n // Start date property name (convenience field).\n date_property_name?: string\n // End date property (optional, for items that span a range).\n end_date_property_id?: string\n // End date property name (convenience field).\n end_date_property_name?: string\n // Properties to display on timeline items.\n properties?: Array<ViewPropertyConfigResponse>\n // Whether to show the table panel alongside the timeline.\n show_table?: boolean\n // Properties to display in the table panel (when show_table is true).\n table_properties?: Array<ViewPropertyConfigResponse>\n // Timeline zoom/preference state.\n preference?: TimelinePreferenceResponse\n // Dependency arrows configuration.\n arrows_by?: TimelineArrowsByResponse\n // Whether to color-code items by property.\n color_by?: boolean\n}\n\ntype TimestampSortResponse = {\n // The timestamp to sort by.\n timestamp: \"created_time\" | \"last_edited_time\"\n // Sort direction.\n direction: \"ascending\" | \"descending\"\n}\n\n/**\n * View configuration, typed by view type (table, board, calendar, etc.).\n */\ntype ViewConfigResponse =\n | TableViewConfigResponse\n | BoardViewConfigResponse\n | CalendarViewConfigResponse\n | TimelineViewConfigResponse\n | GalleryViewConfigResponse\n | ListViewConfigResponse\n | MapViewConfigResponse\n | FormViewConfigResponse\n | ChartViewConfigResponse\n | DashboardViewConfigResponse\n\n/**\n * Filter for the view. Can be a property filter (filter by property value), timestamp\n * filter (filter by created_time or last_edited_time), or compound filter (combine\n * filters with and/or logic). Compound filters support up to 2 levels of nesting.\n */\ntype ViewFilterResponse =\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n }\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n }\n >\n }\n\ntype ViewPropertyConfigResponse = {\n // Property ID (stable identifier).\n property_id: string\n // Property name (convenience field, not stable across renames).\n property_name?: string\n // Whether this property is visible in the view.\n visible?: boolean\n // Width of the property column in pixels (table view only).\n width?: number\n // Whether to wrap content in this property cell/card.\n wrap?: boolean\n // How to display status properties (as select dropdown or checkbox).\n status_show_as?: \"select\" | \"checkbox\"\n // Property width mode in compact card layouts (board/gallery).\n card_property_width_mode?: \"full_line\" | \"inline\"\n // Date display format (date properties only). \"full\" = localized full date, \"short\" =\n // month and day, \"month_day_year\" = MM/DD/YYYY, \"day_month_year\" = DD/MM/YYYY,\n // \"year_month_day\" = YYYY/MM/DD, \"relative\" = relative dates.\n date_format?:\n | \"full\"\n | \"short\"\n | \"month_day_year\"\n | \"day_month_year\"\n | \"year_month_day\"\n | \"relative\"\n // Time display format (date properties only). \"12_hour\" = 12-hour clock with AM/PM,\n // \"24_hour\" = 24-hour clock, \"hidden\" = hide time.\n time_format?: \"12_hour\" | \"24_hour\" | \"hidden\"\n}\n\nexport type ViewQueryResponse = {\n // The object type.\n object: \"view_query\"\n // The query ID.\n id: IdResponse\n // The view this query was executed against.\n view_id: IdResponse\n // When the cached query results expire.\n expires_at: string\n // Total number of results in the query.\n total_count: number\n // The page results for this page.\n results: Array<PageReferenceResponse>\n // Cursor for the next page of results.\n next_cursor: IdResponse | null\n // Whether there are more results.\n has_more: boolean\n // Set to `{ type: 'incomplete', incomplete_reason: 'query_result_limit_reached' }` when\n // the view's underlying data source has more rows matching this query than the\n // server-side pagination depth limit allows.\n request_status?: RequestStatusResponse\n}\n\n/**\n * Sort for the view. Can sort by property or timestamp.\n */\ntype ViewSortResponse = PropertySortResponse | TimestampSortResponse\n\ntype ListDatabaseViewsQueryParameters = {\n // ID of a Notion database (collection view block) to list views for. At least one of\n // database_id or data_source_id is required.\n database_id?: IdRequest\n // ID of a data source (collection) to list all views for, including linked views across\n // the workspace. At least one of database_id or data_source_id is required.\n data_source_id?: IdRequest\n // If supplied, this endpoint will return a page of results starting after the cursor\n // provided. If not supplied, this endpoint will return the first page of results.\n start_cursor?: string | null\n // The number of items from the full list desired in the response. Maximum: 100\n page_size?: number\n}\n\nexport type ListDatabaseViewsParameters = ListDatabaseViewsQueryParameters\n\nexport type ListDatabaseViewsResponse = {\n // Always `list`\n object: \"list\"\n next_cursor: IdResponse | null\n has_more: boolean\n results: Array<DataSourceViewReferenceResponse>\n // Always `view`\n type: \"view\"\n view: EmptyObject\n request_status?: RequestStatusResponse\n}\n\n/**\n * List views\n */\nexport const listDatabaseViews = {\n method: \"get\",\n pathParams: [],\n queryParams: [\"database_id\", \"data_source_id\", \"start_cursor\", \"page_size\"],\n bodyParams: [],\n\n path: (): string => `views`,\n} as const\n\ntype CreateViewBodyParameters = CreateViewRequest\n\nexport type CreateViewParameters = CreateViewBodyParameters\n\nexport type CreateViewResponse =\n | PartialDataSourceViewObjectResponse\n | DataSourceViewObjectResponse\n\n/**\n * Create a view\n */\nexport const createView = {\n method: \"post\",\n pathParams: [],\n queryParams: [],\n bodyParams: [],\n\n path: (): string => `views`,\n} as const\n\ntype GetViewPathParameters = {\n // ID of a Notion view.\n view_id: IdRequest\n}\n\nexport type GetViewParameters = GetViewPathParameters\n\nexport type GetViewResponse =\n | PartialDataSourceViewObjectResponse\n | DataSourceViewObjectResponse\n\n/**\n * Retrieve a view\n */\nexport const getView = {\n method: \"get\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: GetViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype UpdateViewPathParameters = {\n // ID of a Notion view.\n view_id: IdRequest\n}\n\ntype UpdateViewBodyParameters = UpdateViewRequest\n\nexport type UpdateViewParameters = UpdateViewPathParameters &\n UpdateViewBodyParameters\n\nexport type UpdateViewResponse =\n | PartialDataSourceViewObjectResponse\n | DataSourceViewObjectResponse\n\n/**\n * Update a view\n */\nexport const updateView = {\n method: \"patch\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: UpdateViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype DeleteViewPathParameters = {\n // The ID of the view to delete.\n view_id: IdRequest\n}\n\nexport type DeleteViewParameters = DeleteViewPathParameters\n\nexport type DeleteViewResponse = PartialDataSourceViewObjectResponse\n\n/**\n * Delete a view\n */\nexport const deleteView = {\n method: \"delete\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: DeleteViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype CreateViewQueryPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n}\n\ntype CreateViewQueryBodyParameters = CreateViewQueryRequest\n\nexport type CreateViewQueryParameters = CreateViewQueryPathParameters &\n CreateViewQueryBodyParameters\n\nexport type CreateViewQueryResponse = ViewQueryResponse\n\n/**\n * Create a view query\n */\nexport const createViewQuery = {\n method: \"post\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: CreateViewQueryPathParameters): string =>\n `views/${p.view_id}/queries`,\n} as const\n\ntype GetViewQueryResultsPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n // The ID of the query.\n query_id: IdRequest\n}\n\ntype GetViewQueryResultsQueryParameters = {\n // If supplied, this endpoint will return a page of results starting after the cursor\n // provided.\n start_cursor?: string | null\n // The number of results to return per page. Maximum: 100\n page_size?: number\n}\n\nexport type GetViewQueryResultsParameters = GetViewQueryResultsPathParameters &\n GetViewQueryResultsQueryParameters\n\nexport type GetViewQueryResultsResponse = {\n // Always `list`\n object: \"list\"\n next_cursor: IdResponse | null\n has_more: boolean\n results: Array<PartialPageObjectResponse>\n // Always `page`\n type: \"page\"\n page: EmptyObject\n request_status?: RequestStatusResponse\n}\n\n/**\n * Get view query results\n */\nexport const getViewQueryResults = {\n method: \"get\",\n pathParams: [\"view_id\", \"query_id\"],\n queryParams: [\"start_cursor\", \"page_size\"],\n bodyParams: [],\n\n path: (p: GetViewQueryResultsPathParameters): string =>\n `views/${p.view_id}/queries/${p.query_id}`,\n} as const\n\ntype DeleteViewQueryPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n // The ID of the query.\n query_id: IdRequest\n}\n\nexport type DeleteViewQueryParameters = DeleteViewQueryPathParameters\n\nexport type DeleteViewQueryResponse = DeletedViewQueryResponse\n\n/**\n * Delete a view query\n */\nexport const deleteViewQuery = {\n method: \"delete\",\n pathParams: [\"view_id\", \"query_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: DeleteViewQueryPathParameters): string =>\n `views/${p.view_id}/queries/${p.query_id}`,\n} as const\n"]}
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../../src/api-endpoints/views.ts"],"names":[],"mappings":";AAAA,sBAAsB;AACtB,+CAA+C;;;AA6zB/C;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,CAAC;IAC3E,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,GAAW,EAAE,CAAC,OAAO;CACnB,CAAA;AASV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,GAAW,EAAE,CAAC,OAAO;CACnB,CAAA;AAYV;;GAEG;AACU,QAAA,OAAO,GAAG;IACrB,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAwB,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CACxD,CAAA;AAeV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAA2B,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CAC3D,CAAA;AAWV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAA2B,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CAC3D,CAAA;AAcV;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAgC,EAAU,EAAE,CACjD,SAAS,CAAC,CAAC,OAAO,UAAU;CACtB,CAAA;AAgCV;;GAEG;AACU,QAAA,mBAAmB,GAAG;IACjC,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;IAC1C,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAoC,EAAU,EAAE,CACrD,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAA;AAaV;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAgC,EAAU,EAAE,CACjD,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAA","sourcesContent":["// cspell:disable-file\n// Note: This is a generated file. DO NOT EDIT!\n\nimport type {\n CreateViewQueryRequest,\n CreateViewRequest,\n DataSourceViewReferenceResponse,\n DatabaseParentResponse,\n EmptyObject,\n IdRequest,\n IdResponse,\n PartialPageObjectResponse,\n PartialUserObjectResponse,\n RequestStatusResponse,\n UpdateViewRequest,\n} from \"./common\"\n\ntype BoardViewConfigResponse = {\n // The view configuration type.\n type: \"board\"\n // Column (horizontal) grouping - required for board view.\n group_by: GroupByConfigResponse\n // Sub-grouping (vertical swimlanes within columns).\n sub_group_by?: GroupByConfigResponse\n // Properties to display on each card.\n properties?: Array<ViewPropertyConfigResponse>\n // Card cover/preview image configuration.\n cover?: CoverConfigResponse\n // Cover image size.\n cover_size?: \"small\" | \"medium\" | \"large\"\n // Cover image aspect ratio.\n cover_aspect?: \"contain\" | \"cover\"\n // Card layout mode (list shows all properties, compact shows inline).\n card_layout?: \"list\" | \"compact\"\n}\n\ntype CalendarViewConfigResponse = {\n // The view configuration type.\n type: \"calendar\"\n // Date property used to position items on the calendar - required.\n date_property_id: string\n // Date property name (convenience field).\n date_property_name?: string\n // Properties to display on calendar event cards.\n properties?: Array<ViewPropertyConfigResponse>\n // Calendar view range.\n view_range?: \"week\" | \"month\"\n // Whether to show weekend days.\n show_weekends?: boolean\n}\n\ntype ChartAggregationResponse = {\n // The aggregation operator. \"count\" counts all rows and does not require a property_id.\n // All other operators require a property_id.\n aggregator:\n | \"count\"\n | \"count_values\"\n | \"sum\"\n | \"average\"\n | \"median\"\n | \"min\"\n | \"max\"\n | \"range\"\n | \"unique\"\n | \"empty\"\n | \"not_empty\"\n | \"percent_empty\"\n | \"percent_not_empty\"\n | \"checked\"\n | \"unchecked\"\n | \"percent_checked\"\n | \"percent_unchecked\"\n | \"earliest_date\"\n | \"latest_date\"\n | \"date_range\"\n // The property to aggregate on. Required for all operators except \"count\".\n property_id?: string\n}\n\ntype ChartReferenceLineResponse = {\n // Unique identifier for the reference line.\n id: string\n // The y-axis value where the reference line is drawn.\n value: number\n // Label displayed alongside the reference line.\n label: string\n // Color of the reference line.\n color:\n | \"gray\"\n | \"lightgray\"\n | \"brown\"\n | \"yellow\"\n | \"orange\"\n | \"green\"\n | \"blue\"\n | \"purple\"\n | \"pink\"\n | \"red\"\n // Line style: \"solid\" for a continuous line, \"dash\" for a dashed line.\n dash_style: \"solid\" | \"dash\"\n}\n\ntype ChartViewConfigResponse = {\n // The view configuration type.\n type: \"chart\"\n // The chart type: column (vertical bars), bar (horizontal bars), line, donut, or number\n // (single value display).\n chart_type: \"column\" | \"bar\" | \"line\" | \"donut\" | \"number\"\n // X-axis grouping configuration for column/bar/line/donut charts using grouped data.\n // Null when using results (raw property values) mode.\n x_axis?: GroupByConfigResponse | null\n // Y-axis aggregation for column/bar/line/donut charts using grouped data. Null when\n // using results mode.\n y_axis?: ChartAggregationResponse | null\n // Property ID for the x-axis name values when using results (raw property values) mode.\n x_axis_property_id?: string\n // Property ID for the y-axis numeric values when using results (raw property values)\n // mode.\n y_axis_property_id?: string\n // Aggregation configuration for number charts (single value display).\n value?: ChartAggregationResponse\n // Sort order for chart data.\n sort?:\n \"manual\" | \"x_ascending\" | \"x_descending\" | \"y_ascending\" | \"y_descending\"\n // Color theme for the chart.\n color_theme?:\n | \"gray\"\n | \"blue\"\n | \"yellow\"\n | \"green\"\n | \"purple\"\n | \"teal\"\n | \"orange\"\n | \"pink\"\n | \"red\"\n | \"auto\"\n | \"colorful\"\n // Chart height.\n height?: \"small\" | \"medium\" | \"large\" | \"extra_large\"\n // Whether to hide groups with no data on the x-axis.\n hide_empty_groups?: boolean\n // Legend display position. \"off\" hides the legend.\n legend_position?: \"off\" | \"bottom\" | \"side\"\n // Whether to show data value labels on chart elements.\n show_data_labels?: boolean\n // Which axis labels to display.\n axis_labels?: \"none\" | \"x_axis\" | \"y_axis\" | \"both\"\n // Which grid lines to display.\n grid_lines?: \"none\" | \"horizontal\" | \"vertical\" | \"both\"\n // Whether to show cumulative values (line charts only).\n cumulative?: boolean\n // Whether to use smooth curves (line charts only).\n smooth_line?: boolean\n // Whether to hide the shaded area under the line (line charts only).\n hide_line_fill_area?: boolean\n // How grouped/stacked bars are displayed. \"normal\" stacks values, \"percent\" normalizes\n // to 100%, \"side_by_side\" places bars next to each other.\n group_style?: \"normal\" | \"percent\" | \"side_by_side\"\n // Custom minimum value for the y-axis. Null clears the override.\n y_axis_min?: number | null\n // Custom maximum value for the y-axis. Null clears the override.\n y_axis_max?: number | null\n // What to display on donut chart slices.\n donut_labels?: \"none\" | \"value\" | \"name\" | \"name_and_value\"\n // Whether to hide the title label (number charts only).\n hide_title?: boolean\n // Stack-by grouping configuration for stacked/grouped bar charts (column/bar/line only).\n // Null when not stacked.\n stack_by?: GroupByConfigResponse | null\n // Reference lines drawn on the chart. Null when no reference lines are configured.\n reference_lines?: Array<ChartReferenceLineResponse> | null\n // Text caption displayed below the chart. Null when no caption is shown.\n caption?: string | null\n // Whether chart elements are colored by their numeric value (gradient coloring).\n color_by_value?: boolean\n}\n\ntype CheckboxGroupByConfigResponse = {\n // The property type for grouping.\n type: \"checkbox\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (only manual for checkbox).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype CoverConfigResponse = {\n // Source of the cover image.\n type: \"page_cover\" | \"page_content\" | \"page_content_first\" | \"property\"\n // Property ID when type is \"property\".\n property_id?: string\n}\n\nexport type DashboardRowResponse = {\n // The ID of this row module.\n id: string\n // The widget modules within this row.\n widgets: Array<DashboardWidgetResponse>\n // Fixed height of the row in pixels.\n height?: number\n}\n\ntype DashboardViewConfigResponse = {\n // The view configuration type.\n type: \"dashboard\"\n // The rows that make up the dashboard layout. Each row contains one or more widget\n // modules.\n rows: Array<DashboardRowResponse>\n}\n\nexport type DashboardWidgetResponse = {\n // The ID of this widget module.\n id: string\n // The ID of the collection view rendered by this widget.\n view_id: string\n // Width of the widget in a 12-column grid (1-12). 12 means full width.\n width?: number\n // The 0-based index of the row this widget belongs to. Widgets in the same row share the\n // same row_index.\n row_index?: number\n}\n\nexport type DataSourceViewObjectResponse = {\n // The object type name.\n object: \"view\"\n // The ID of the view.\n id: IdResponse\n // The parent database of the view.\n parent: DatabaseParentResponse\n // The name of the view.\n name: string\n // The view type.\n type:\n | \"table\"\n | \"board\"\n | \"list\"\n | \"calendar\"\n | \"timeline\"\n | \"gallery\"\n | \"form\"\n | \"chart\"\n | \"map\"\n | \"dashboard\"\n // The time when the view was created.\n created_time: string\n // The time when the view was last edited.\n last_edited_time: string\n // Canonical deep link to the view in Notion.\n url: string\n // The ID of the data source this view is scoped to, or null for dashboard views.\n data_source_id?: string | null\n // The user who created the view, or null if not available.\n created_by?: PartialUserObjectResponse | null\n // The user who last edited the view, or null if not available.\n last_edited_by?: PartialUserObjectResponse | null\n // The filter applied to this view (same shape as data source query filter).\n filter?: ViewFilterResponse | null\n // The sorts applied to this view (same shape as data source query sorts).\n sorts?: Array<ViewSortResponse> | null\n // Quick filters pinned to the view's filter bar. Keys are property IDs. Values are\n // filter conditions (same shape as a property filter without the property field). Null\n // when no quick filters are set.\n quick_filters?: Record<string, QuickFilterConditionResponse> | null\n // View presentation configuration.\n configuration?: ViewConfigResponse | null\n // For dashboard widget views, the ID of the parent dashboard view. Only present when\n // this view is a widget inside a dashboard.\n dashboard_view_id?: string\n}\n\ntype DateGroupByConfigResponse = {\n // The property type for grouping.\n type: \"date\" | \"created_time\" | \"last_edited_time\"\n // Property ID to group by.\n property_id: string\n // Granularity for date grouping.\n group_by: \"relative\" | \"day\" | \"week\" | \"month\" | \"year\"\n // Sort order for groups (no manual sort for dates).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n // Start day of week for week grouping (0 = Sunday, 1 = Monday).\n start_day_of_week?: 0 | 1\n}\n\nexport type DeletedViewQueryResponse = {\n // The object type.\n object: \"view_query\"\n // The ID of the deleted view query.\n id: IdResponse\n // Whether the view query was deleted.\n deleted: boolean\n}\n\ntype FormViewConfigResponse = {\n // The view configuration type.\n type: \"form\"\n // Whether the form is closed for submissions.\n is_form_closed?: boolean\n // Whether anonymous (non-logged-in) submissions are allowed.\n anonymous_submissions?: boolean\n // Permission level granted to the submitter on the created page after form submission.\n submission_permissions?:\n \"none\" | \"comment_only\" | \"reader\" | \"read_and_write\" | \"editor\"\n}\n\ntype FormulaCheckboxSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"checkbox\"\n // Sort order for groups (only manual for checkbox).\n sort: GroupSortResponse\n}\n\ntype FormulaDateSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"date\"\n // Granularity for date grouping.\n group_by: \"relative\" | \"day\" | \"week\" | \"month\" | \"year\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Start day of week for week grouping (0 = Sunday, 1 = Monday).\n start_day_of_week?: 0 | 1\n}\n\ntype FormulaGroupByConfigResponse = {\n // The property type for grouping.\n type: \"formula\"\n // Property ID of the formula to group by.\n property_id: string\n // Sub-group-by configuration based on the formula result type.\n group_by: FormulaSubGroupByResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype FormulaNumberSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"number\"\n // Sort order for groups (ascending or descending only).\n sort: GroupSortResponse\n // Start of the range for number grouping buckets.\n range_start?: number\n // End of the range for number grouping buckets.\n range_end?: number\n // Size of each bucket in number grouping.\n range_size?: number\n}\n\n/**\n * Sub-group-by configuration for formula properties based on result type.\n */\ntype FormulaSubGroupByResponse =\n | FormulaDateSubGroupByResponse\n | FormulaTextSubGroupByResponse\n | FormulaNumberSubGroupByResponse\n | FormulaCheckboxSubGroupByResponse\n\ntype FormulaTextSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"text\"\n // How to group text values. \"exact\" = exact match, \"alphabet_prefix\" = first letter.\n group_by: \"exact\" | \"alphabet_prefix\"\n // Sort order for groups.\n sort: GroupSortResponse\n}\n\ntype GalleryViewConfigResponse = {\n // The view configuration type.\n type: \"gallery\"\n // Properties to display on gallery cards.\n properties?: Array<ViewPropertyConfigResponse>\n // Card cover/preview image configuration.\n cover?: CoverConfigResponse\n // Cover image size.\n cover_size?: \"small\" | \"medium\" | \"large\"\n // Cover image aspect ratio.\n cover_aspect?: \"contain\" | \"cover\"\n // Card layout mode (list shows all properties, compact shows inline).\n card_layout?: \"list\" | \"compact\"\n}\n\n/**\n * Group-by configuration based on property type.\n */\ntype GroupByConfigResponse =\n | SelectGroupByConfigResponse\n | StatusGroupByConfigResponse\n | PersonGroupByConfigResponse\n | RelationGroupByConfigResponse\n | DateGroupByConfigResponse\n | TextGroupByConfigResponse\n | NumberGroupByConfigResponse\n | CheckboxGroupByConfigResponse\n | FormulaGroupByConfigResponse\n\ntype GroupSortResponse = {\n // Sort direction for groups.\n type: \"manual\" | \"ascending\" | \"descending\"\n}\n\ntype ListViewConfigResponse = {\n // The view configuration type.\n type: \"list\"\n // Properties to display in list items.\n properties?: Array<ViewPropertyConfigResponse>\n}\n\ntype MapViewConfigResponse = {\n // The view configuration type.\n type: \"map\"\n // Map display height.\n height?: \"small\" | \"medium\" | \"large\" | \"extra_large\"\n // Property ID of the location property used to position items on the map.\n map_by?: string\n // Map-by property name (convenience field).\n map_by_property_name?: string\n // Properties to display on map pin cards.\n properties?: Array<ViewPropertyConfigResponse>\n}\n\ntype NumberGroupByConfigResponse = {\n // The property type for grouping.\n type: \"number\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (ascending or descending only).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n // Start of the range for number grouping buckets.\n range_start?: number\n // End of the range for number grouping buckets.\n range_end?: number\n // Size of each bucket in number grouping.\n range_size?: number\n}\n\ntype PageReferenceResponse = {\n // The object type.\n object: string\n // The object ID.\n id: IdResponse\n}\n\nexport type PartialDataSourceViewObjectResponse = {\n // The object type name.\n object: \"view\"\n // The ID of the view.\n id: IdResponse\n // The parent database of the view.\n parent: DatabaseParentResponse\n // The view type.\n type:\n | \"table\"\n | \"board\"\n | \"list\"\n | \"calendar\"\n | \"timeline\"\n | \"gallery\"\n | \"form\"\n | \"chart\"\n | \"map\"\n | \"dashboard\"\n}\n\ntype PersonGroupByConfigResponse = {\n // The property type for grouping.\n type: \"person\" | \"created_by\" | \"last_edited_by\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (only manual supported).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype PropertySortResponse = {\n // The name or ID of the property to sort by.\n property: string\n // Sort direction.\n direction: \"ascending\" | \"descending\"\n}\n\n/**\n * A property filter condition. Same shape as a property filter but without the\n * \"property\" field. For example: { \"select\": { \"equals\": \"High\" } }. An empty object\n * means the quick filter has no criteria yet.\n */\ntype QuickFilterConditionResponse = Record<string, never>\n\ntype RelationGroupByConfigResponse = {\n // The property type for grouping.\n type: \"relation\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype SelectGroupByConfigResponse = {\n // The property type for grouping.\n type: \"select\" | \"multi_select\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype StatusGroupByConfigResponse = {\n // The property type for grouping.\n type: \"status\"\n // Property ID to group by.\n property_id: string\n // How to group status values. \"group\" groups by status group (To Do/In Progress/Done),\n // \"option\" groups by individual option.\n group_by: \"group\" | \"option\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype SubtaskConfigResponse = {\n // Relation property ID used for parent-child nesting.\n property_id?: string\n // How sub-items are displayed. \"show\" renders hierarchically with toggles, \"hidden\"\n // shows parents with a count, \"flattened\" shows sub-items with a parent indicator,\n // \"disabled\" turns off sub-item rendering.\n display_mode?: \"show\" | \"hidden\" | \"flattened\" | \"disabled\"\n // Which items are included when filtering. \"parents\" includes parent items only,\n // \"parents_and_subitems\" includes both, \"subitems\" includes sub-items only.\n filter_scope?: \"parents\" | \"parents_and_subitems\" | \"subitems\"\n // Property ID of the column showing the sub-item expand/collapse toggle.\n toggle_column_id?: string\n}\n\ntype TableViewConfigResponse = {\n // The view configuration type.\n type: \"table\"\n // Columns/properties visible in the table view.\n properties?: Array<ViewPropertyConfigResponse>\n // Vertical (row) grouping configuration.\n group_by?: GroupByConfigResponse\n // Sub-item (subtask) display configuration.\n subtasks?: SubtaskConfigResponse\n // Whether to wrap cell content by default.\n wrap_cells?: boolean\n // Index of the last frozen column. Columns up to and including this index are frozen.\n frozen_column_index?: number\n // Whether to show vertical lines between columns.\n show_vertical_lines?: boolean\n}\n\ntype TextGroupByConfigResponse = {\n // The property type for grouping.\n type: \"text\" | \"title\" | \"url\" | \"email\" | \"phone_number\"\n // Property ID to group by.\n property_id: string\n // How to group text values. \"exact\" = exact match, \"alphabet_prefix\" = first letter.\n group_by: \"exact\" | \"alphabet_prefix\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype TimelineArrowsByResponse = {\n // Relation property ID used for dependency arrows.\n property_id?: string | null\n}\n\ntype TimelinePreferenceResponse = {\n // Zoom level for the timeline.\n zoom_level:\n | \"hours\"\n | \"day\"\n | \"week\"\n | \"bi_week\"\n | \"month\"\n | \"quarter\"\n | \"year\"\n | \"5_years\"\n // Center timestamp for the timeline view (Unix timestamp in ms).\n center_timestamp?: number\n}\n\ntype TimelineViewConfigResponse = {\n // The view configuration type.\n type: \"timeline\"\n // Start date property - required.\n date_property_id: string\n // Start date property name (convenience field).\n date_property_name?: string\n // End date property (optional, for items that span a range).\n end_date_property_id?: string\n // End date property name (convenience field).\n end_date_property_name?: string\n // Properties to display on timeline items.\n properties?: Array<ViewPropertyConfigResponse>\n // Whether to show the table panel alongside the timeline.\n show_table?: boolean\n // Properties to display in the table panel (when show_table is true).\n table_properties?: Array<ViewPropertyConfigResponse>\n // Timeline zoom/preference state.\n preference?: TimelinePreferenceResponse\n // Dependency arrows configuration.\n arrows_by?: TimelineArrowsByResponse\n // Whether to color-code items by property.\n color_by?: boolean\n}\n\ntype TimestampSortResponse = {\n // The timestamp to sort by.\n timestamp: \"created_time\" | \"last_edited_time\"\n // Sort direction.\n direction: \"ascending\" | \"descending\"\n}\n\n/**\n * View configuration, typed by view type (table, board, calendar, etc.).\n */\ntype ViewConfigResponse =\n | TableViewConfigResponse\n | BoardViewConfigResponse\n | CalendarViewConfigResponse\n | TimelineViewConfigResponse\n | GalleryViewConfigResponse\n | ListViewConfigResponse\n | MapViewConfigResponse\n | FormViewConfigResponse\n | ChartViewConfigResponse\n | DashboardViewConfigResponse\n\n/**\n * Filter for the view. Can be a property filter (filter by property value), timestamp\n * filter (filter by created_time or last_edited_time), or compound filter (combine\n * filters with and/or logic). Compound filters support up to 2 levels of nesting.\n */\ntype ViewFilterResponse =\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n }\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n }\n >\n }\n\ntype ViewPropertyConfigResponse = {\n // Property ID (stable identifier).\n property_id: string\n // Property name (convenience field, not stable across renames).\n property_name?: string\n // Whether this property is visible in the view.\n visible?: boolean\n // Width of the property column in pixels (table view only).\n width?: number\n // Whether to wrap content in this property cell/card.\n wrap?: boolean\n // How to display status properties (as select dropdown or checkbox).\n status_show_as?: \"select\" | \"checkbox\"\n // Property width mode in compact card layouts (board/gallery).\n card_property_width_mode?: \"full_line\" | \"inline\"\n // Date display format (date properties only). \"full\" = localized full date, \"short\" =\n // month and day, \"month_day_year\" = MM/DD/YYYY, \"day_month_year\" = DD/MM/YYYY,\n // \"year_month_day\" = YYYY/MM/DD, \"relative\" = relative dates.\n date_format?:\n | \"full\"\n | \"short\"\n | \"month_day_year\"\n | \"day_month_year\"\n | \"year_month_day\"\n | \"relative\"\n // Time display format (date properties only). \"12_hour\" = 12-hour clock with AM/PM,\n // \"24_hour\" = 24-hour clock, \"hidden\" = hide time.\n time_format?: \"12_hour\" | \"24_hour\" | \"hidden\"\n}\n\nexport type ViewQueryResponse = {\n // The object type.\n object: \"view_query\"\n // The query ID.\n id: IdResponse\n // The view this query was executed against.\n view_id: IdResponse\n // When the cached query results expire.\n expires_at: string\n // Total number of results in the query.\n total_count: number\n // The page results for this page.\n results: Array<PageReferenceResponse>\n // Cursor for the next page of results.\n next_cursor: IdResponse | null\n // Whether there are more results.\n has_more: boolean\n // Set to `{ type: 'incomplete', incomplete_reason: 'query_result_limit_reached' }` when\n // the view's underlying data source has more rows matching this query than the\n // server-side pagination depth limit allows.\n request_status?: RequestStatusResponse\n}\n\n/**\n * Sort for the view. Can sort by property or timestamp.\n */\ntype ViewSortResponse = PropertySortResponse | TimestampSortResponse\n\ntype ListDatabaseViewsQueryParameters = {\n // ID of a Notion database (collection view block) to list views for. At least one of\n // database_id or data_source_id is required.\n database_id?: IdRequest\n // ID of a data source (collection) to list all views for, including linked views across\n // the workspace. At least one of database_id or data_source_id is required.\n data_source_id?: IdRequest\n // If supplied, this endpoint will return a page of results starting after the cursor\n // provided. If not supplied, this endpoint will return the first page of results.\n start_cursor?: string | null\n // The number of items from the full list desired in the response. Maximum: 100\n page_size?: number\n}\n\nexport type ListDatabaseViewsParameters = ListDatabaseViewsQueryParameters\n\nexport type ListDatabaseViewsResponse = {\n // Always `list`\n object: \"list\"\n next_cursor: IdResponse | null\n has_more: boolean\n results: Array<DataSourceViewReferenceResponse>\n // Always `view`\n type: \"view\"\n view: EmptyObject\n request_status?: RequestStatusResponse\n}\n\n/**\n * List views\n */\nexport const listDatabaseViews = {\n method: \"get\",\n pathParams: [],\n queryParams: [\"database_id\", \"data_source_id\", \"start_cursor\", \"page_size\"],\n bodyParams: [],\n\n path: (): string => `views`,\n} as const\n\ntype CreateViewBodyParameters = CreateViewRequest\n\nexport type CreateViewParameters = CreateViewBodyParameters\n\nexport type CreateViewResponse =\n PartialDataSourceViewObjectResponse | DataSourceViewObjectResponse\n\n/**\n * Create a view\n */\nexport const createView = {\n method: \"post\",\n pathParams: [],\n queryParams: [],\n bodyParams: [],\n\n path: (): string => `views`,\n} as const\n\ntype GetViewPathParameters = {\n // ID of a Notion view.\n view_id: IdRequest\n}\n\nexport type GetViewParameters = GetViewPathParameters\n\nexport type GetViewResponse =\n PartialDataSourceViewObjectResponse | DataSourceViewObjectResponse\n\n/**\n * Retrieve a view\n */\nexport const getView = {\n method: \"get\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: GetViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype UpdateViewPathParameters = {\n // ID of a Notion view.\n view_id: IdRequest\n}\n\ntype UpdateViewBodyParameters = UpdateViewRequest\n\nexport type UpdateViewParameters = UpdateViewPathParameters &\n UpdateViewBodyParameters\n\nexport type UpdateViewResponse =\n PartialDataSourceViewObjectResponse | DataSourceViewObjectResponse\n\n/**\n * Update a view\n */\nexport const updateView = {\n method: \"patch\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: UpdateViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype DeleteViewPathParameters = {\n // The ID of the view to delete.\n view_id: IdRequest\n}\n\nexport type DeleteViewParameters = DeleteViewPathParameters\n\nexport type DeleteViewResponse = PartialDataSourceViewObjectResponse\n\n/**\n * Delete a view\n */\nexport const deleteView = {\n method: \"delete\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: DeleteViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype CreateViewQueryPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n}\n\ntype CreateViewQueryBodyParameters = CreateViewQueryRequest\n\nexport type CreateViewQueryParameters = CreateViewQueryPathParameters &\n CreateViewQueryBodyParameters\n\nexport type CreateViewQueryResponse = ViewQueryResponse\n\n/**\n * Create a view query\n */\nexport const createViewQuery = {\n method: \"post\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: CreateViewQueryPathParameters): string =>\n `views/${p.view_id}/queries`,\n} as const\n\ntype GetViewQueryResultsPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n // The ID of the query.\n query_id: IdRequest\n}\n\ntype GetViewQueryResultsQueryParameters = {\n // If supplied, this endpoint will return a page of results starting after the cursor\n // provided.\n start_cursor?: string | null\n // The number of results to return per page. Maximum: 100\n page_size?: number\n}\n\nexport type GetViewQueryResultsParameters = GetViewQueryResultsPathParameters &\n GetViewQueryResultsQueryParameters\n\nexport type GetViewQueryResultsResponse = {\n // Always `list`\n object: \"list\"\n next_cursor: IdResponse | null\n has_more: boolean\n results: Array<PartialPageObjectResponse>\n // Always `page`\n type: \"page\"\n page: EmptyObject\n request_status?: RequestStatusResponse\n}\n\n/**\n * Get view query results\n */\nexport const getViewQueryResults = {\n method: \"get\",\n pathParams: [\"view_id\", \"query_id\"],\n queryParams: [\"start_cursor\", \"page_size\"],\n bodyParams: [],\n\n path: (p: GetViewQueryResultsPathParameters): string =>\n `views/${p.view_id}/queries/${p.query_id}`,\n} as const\n\ntype DeleteViewQueryPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n // The ID of the query.\n query_id: IdRequest\n}\n\nexport type DeleteViewQueryParameters = DeleteViewQueryPathParameters\n\nexport type DeleteViewQueryResponse = DeletedViewQueryResponse\n\n/**\n * Delete a view query\n */\nexport const deleteViewQuery = {\n method: \"delete\",\n pathParams: [\"view_id\", \"query_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: DeleteViewQueryPathParameters): string =>\n `views/${p.view_id}/queries/${p.query_id}`,\n} as const\n"]}
|
package/build/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import { SupportedResponse } from \"./fetch-types\"\nimport { isObject } from \"./utils\"\nimport { Assert } from \"./type-utils\"\n\n/**\n * Error codes returned in responses from the API.\n */\nexport enum APIErrorCode {\n Unauthorized = \"unauthorized\",\n RestrictedResource = \"restricted_resource\",\n ObjectNotFound = \"object_not_found\",\n RateLimited = \"rate_limited\",\n InvalidJSON = \"invalid_json\",\n InvalidRequestURL = \"invalid_request_url\",\n InvalidRequest = \"invalid_request\",\n InvalidBeta = \"invalid_beta\",\n ValidationError = \"validation_error\",\n ConflictError = \"conflict_error\",\n InternalServerError = \"internal_server_error\",\n ServiceOverload = \"service_overload\",\n ServiceUnavailable = \"service_unavailable\",\n GatewayTimeout = \"gateway_timeout\",\n}\n\n/**\n * Error codes generated for client errors.\n */\nexport enum ClientErrorCode {\n RequestTimeout = \"notionhq_client_request_timeout\",\n ResponseError = \"notionhq_client_response_error\",\n InvalidPathParameter = \"notionhq_client_invalid_path_parameter\",\n}\n\n/**\n * Error codes on errors thrown by the `Client`.\n */\nexport type NotionErrorCode = APIErrorCode | ClientErrorCode\n\n/**\n * Base error type.\n */\nabstract class NotionClientErrorBase<\n Code extends NotionErrorCode,\n> extends Error {\n abstract code: Code\n}\n\n/**\n * Error type that encompasses all the kinds of errors that the Notion client will throw.\n */\nexport type NotionClientError =\n | RequestTimeoutError\n | UnknownHTTPResponseError\n | APIResponseError\n | InvalidPathParameterError\n\n// Assert that NotionClientError's `code` property is a narrow type.\n// This prevents us from accidentally regressing to `string`-typed name field.\ntype _assertCodeIsNarrow = Assert<NotionErrorCode, NotionClientError[\"code\"]>\n\n// Assert that the type of `name` in NotionErrorCode is a narrow type.\n// This prevents us from accidentally regressing to `string`-typed name field.\ntype _assertNameIsNarrow = Assert<\n | \"RequestTimeoutError\"\n | \"UnknownHTTPResponseError\"\n | \"APIResponseError\"\n | \"InvalidPathParameterError\",\n NotionClientError[\"name\"]\n>\n\n/**\n * @param error any value, usually a caught error.\n * @returns `true` if error is a `NotionClientError`.\n */\nexport function isNotionClientError(\n error: unknown\n): error is NotionClientError {\n return isObject(error) && error instanceof NotionClientErrorBase\n}\n\n/**\n * Narrows down the types of a NotionClientError.\n * @param error any value, usually a caught error.\n * @param codes an object mapping from possible error codes to `true`\n * @returns `true` if error is a `NotionClientError` with a code in `codes`.\n */\nfunction isNotionClientErrorWithCode<Code extends NotionErrorCode>(\n error: unknown,\n codes: { [C in Code]: true }\n): error is NotionClientError & { code: Code } {\n return isNotionClientError(error) && error.code in codes\n}\n\n/**\n * Error thrown by the client if a request times out.\n */\nexport class RequestTimeoutError extends NotionClientErrorBase<ClientErrorCode.RequestTimeout> {\n readonly code = ClientErrorCode.RequestTimeout\n readonly name = \"RequestTimeoutError\"\n\n constructor(message = \"Request to Notion API has timed out\") {\n super(message)\n }\n\n static isRequestTimeoutError(error: unknown): error is RequestTimeoutError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.RequestTimeout]: true,\n })\n }\n\n static rejectAfterTimeout<T>(\n promise: Promise<T>,\n timeoutMS: number\n ): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new RequestTimeoutError())\n }, timeoutMS)\n\n promise\n .then(resolve)\n .catch(reject)\n .then(() => clearTimeout(timeoutId))\n })\n }\n}\n\n/**\n * Error thrown when a path parameter contains invalid characters such as\n * path traversal sequences (..) that could alter the intended API endpoint.\n */\nexport class InvalidPathParameterError extends NotionClientErrorBase<ClientErrorCode.InvalidPathParameter> {\n readonly code = ClientErrorCode.InvalidPathParameter\n readonly name = \"InvalidPathParameterError\"\n\n constructor(\n message = \"Path parameter contains invalid characters that could alter the request path\"\n ) {\n super(message)\n }\n\n static isInvalidPathParameterError(\n error: unknown\n ): error is InvalidPathParameterError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.InvalidPathParameter]: true,\n })\n }\n}\n\n/**\n * Error thrown when the client would send a token or client secret from a\n * browser page or worker without `dangerouslyAllowBrowser: true`. Anyone who\n * can load the page can read the token, so this is blocked by default.\n *\n * This is a setup error, not an API error, so it is not a `NotionClientError`.\n */\nexport class BrowserTokenNotAllowedError extends Error {\n readonly name = \"BrowserTokenNotAllowedError\"\n\n constructor(\n message = \"It looks like you're running in a browser. Using a Notion \" +\n \"token here is blocked by default: anyone who can load the page can \" +\n \"read the token and act as your connection. Keep the token on a \" +\n \"server instead. If only you can open this page and you accept the \" +\n \"risk, pass `dangerouslyAllowBrowser: true` to the Client. See \" +\n \"https://developers.notion.com/guides/get-started/handling-api-keys#calling-the-api-from-a-browser\"\n ) {\n super(message)\n }\n}\n\n/**\n * Validates that a request path does not contain path traversal sequences.\n * Throws InvalidPathParameterError if the path contains \"..\" segments,\n * including URL-encoded variants like %2e%2e.\n */\nexport function validateRequestPath(path: string): void {\n // Check for literal path traversal\n if (path.includes(\"..\")) {\n throw new InvalidPathParameterError(\n `Request path \"${path}\" contains path traversal sequence \"..\"`\n )\n }\n\n // Check for URL-encoded path traversal (%2e = '.')\n // Only decode if path contains potential encoded dots\n if (/%2e/i.test(path)) {\n let decoded: string\n try {\n decoded = decodeURIComponent(path)\n } catch {\n // Invalid percent encoding - not a traversal concern\n return\n }\n if (decoded.includes(\"..\")) {\n throw new InvalidPathParameterError(\n `Request path \"${path}\" contains encoded path traversal sequence`\n )\n }\n }\n}\n\n/**\n * Reads a header by name from a `SupportedResponse[\"headers\"]`, which is typed\n * as `unknown` because the SDK supports any `fetch` implementation. Handles\n * both a standard `Headers` object and a plain record. Header names are\n * case-insensitive per RFC 9110, so plain records are matched case-insensitively.\n */\nexport function getResponseHeader(\n headers: unknown,\n name: string\n): string | undefined {\n if (!isObject(headers)) {\n return undefined\n }\n\n const get = headers[\"get\"]\n if (typeof get === \"function\") {\n const value: unknown = get.call(headers, name)\n return typeof value === \"string\" ? value : undefined\n }\n\n const lowerName = name.toLowerCase()\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() !== lowerName) {\n continue\n }\n if (typeof value === \"string\") {\n return value\n }\n if (Array.isArray(value) && typeof value[0] === \"string\") {\n return value[0]\n }\n }\n return undefined\n}\n\ntype HTTPResponseErrorCode = ClientErrorCode.ResponseError | APIErrorCode\n\ntype AdditionalData = Record<string, string | string[]>\n\nclass HTTPResponseError<\n Code extends HTTPResponseErrorCode,\n> extends NotionClientErrorBase<Code> {\n readonly name: string = \"HTTPResponseError\"\n readonly code: Code\n readonly status: number\n readonly headers: SupportedResponse[\"headers\"]\n readonly body: string\n readonly additional_data: AdditionalData | undefined\n readonly request_id: string | undefined\n /**\n * Value of the `cf-ray` response header, when present.\n */\n readonly ray_id: string | undefined\n\n constructor(args: {\n code: Code\n status: number\n message: string\n headers: SupportedResponse[\"headers\"]\n rawBodyText: string\n additional_data: AdditionalData | undefined\n request_id: string | undefined\n }) {\n super(args.message)\n const { code, status, headers, rawBodyText, additional_data, request_id } =\n args\n this.code = code\n this.status = status\n this.headers = headers\n this.body = rawBodyText\n this.additional_data = additional_data\n this.request_id =\n request_id ?? getResponseHeader(headers, \"x-notion-request-id\")\n this.ray_id = getResponseHeader(headers, \"cf-ray\")\n }\n}\n\nconst httpResponseErrorCodes: { [C in HTTPResponseErrorCode]: true } = {\n [ClientErrorCode.ResponseError]: true,\n [APIErrorCode.Unauthorized]: true,\n [APIErrorCode.RestrictedResource]: true,\n [APIErrorCode.ObjectNotFound]: true,\n [APIErrorCode.RateLimited]: true,\n [APIErrorCode.InvalidJSON]: true,\n [APIErrorCode.InvalidRequestURL]: true,\n [APIErrorCode.InvalidRequest]: true,\n [APIErrorCode.InvalidBeta]: true,\n [APIErrorCode.ValidationError]: true,\n [APIErrorCode.ConflictError]: true,\n [APIErrorCode.InternalServerError]: true,\n [APIErrorCode.ServiceOverload]: true,\n [APIErrorCode.ServiceUnavailable]: true,\n [APIErrorCode.GatewayTimeout]: true,\n}\n\nexport function isHTTPResponseError(\n error: unknown\n): error is UnknownHTTPResponseError | APIResponseError {\n if (!isNotionClientErrorWithCode(error, httpResponseErrorCodes)) {\n return false\n }\n\n type _assert = Assert<\n UnknownHTTPResponseError | APIResponseError,\n typeof error\n >\n\n return true\n}\n\n/**\n * Error thrown if an API call responds with an unknown error code, or does not respond with\n * a property-formatted error.\n */\nexport class UnknownHTTPResponseError extends HTTPResponseError<ClientErrorCode.ResponseError> {\n readonly name = \"UnknownHTTPResponseError\"\n\n constructor(args: {\n status: number\n message: string | undefined\n headers: SupportedResponse[\"headers\"]\n rawBodyText: string\n }) {\n const ray_id = getResponseHeader(args.headers, \"cf-ray\")\n const request_id = getResponseHeader(args.headers, \"x-notion-request-id\")\n super({\n ...args,\n code: ClientErrorCode.ResponseError,\n message:\n args.message ??\n buildUnknownResponseMessage({\n status: args.status,\n contentType: getResponseHeader(args.headers, \"content-type\"),\n ray_id,\n request_id,\n }),\n additional_data: undefined,\n request_id,\n })\n }\n\n static isUnknownHTTPResponseError(\n error: unknown\n ): error is UnknownHTTPResponseError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.ResponseError]: true,\n })\n }\n}\n\nconst apiErrorCodes: { [C in APIErrorCode]: true } = {\n [APIErrorCode.Unauthorized]: true,\n [APIErrorCode.RestrictedResource]: true,\n [APIErrorCode.ObjectNotFound]: true,\n [APIErrorCode.RateLimited]: true,\n [APIErrorCode.InvalidJSON]: true,\n [APIErrorCode.InvalidRequestURL]: true,\n [APIErrorCode.InvalidRequest]: true,\n [APIErrorCode.InvalidBeta]: true,\n [APIErrorCode.ValidationError]: true,\n [APIErrorCode.ConflictError]: true,\n [APIErrorCode.InternalServerError]: true,\n [APIErrorCode.ServiceOverload]: true,\n [APIErrorCode.ServiceUnavailable]: true,\n [APIErrorCode.GatewayTimeout]: true,\n}\n\n/**\n * A response from the API indicating a problem.\n * Use the `code` property to handle various kinds of errors. All its possible values are in `APIErrorCode`.\n */\nexport class APIResponseError extends HTTPResponseError<APIErrorCode> {\n readonly name = \"APIResponseError\"\n readonly request_id: string | undefined\n\n static isAPIResponseError(error: unknown): error is APIResponseError {\n return isNotionClientErrorWithCode(error, apiErrorCodes)\n }\n}\n\nexport function buildRequestError(\n response: SupportedResponse,\n bodyText: string\n): APIResponseError | UnknownHTTPResponseError {\n const apiErrorResponseBody = parseAPIErrorResponseBody(bodyText)\n if (apiErrorResponseBody !== undefined) {\n return new APIResponseError({\n code: apiErrorResponseBody.code,\n message: apiErrorResponseBody.message,\n headers: response.headers,\n status: response.status,\n rawBodyText: bodyText,\n additional_data: apiErrorResponseBody.additional_data,\n request_id: apiErrorResponseBody.request_id,\n })\n }\n return new UnknownHTTPResponseError({\n message: undefined,\n headers: response.headers,\n status: response.status,\n rawBodyText: bodyText,\n })\n}\n\n/**\n * Builds the default message for an unrecognized HTTP response.\n *\n * A response with a Cloudflare Ray ID but no Notion request ID was answered\n * before it reached the API. The message surfaces the Ray ID rather than\n * leaving callers to infer it from an HTML body.\n */\nfunction buildUnknownResponseMessage(args: {\n status: number\n contentType: string | undefined\n ray_id: string | undefined\n request_id: string | undefined\n}): string {\n const { status, contentType, ray_id, request_id } = args\n const base = `Request to Notion API failed with status: ${status}`\n if (ray_id === undefined || request_id !== undefined) {\n return base\n }\n const contentTypeNote =\n contentType !== undefined ? ` (content-type: ${contentType})` : \"\"\n const blockedRequestNote =\n status === 403\n ? \" This may mean the request was blocked by a network security rule.\"\n : \"\"\n return (\n `${base}. The response was returned by Notion's edge proxy before reaching ` +\n `the Notion API${contentTypeNote}.${blockedRequestNote} Cloudflare Ray ID: ` +\n `${ray_id}. Include this ID when contacting Notion support.`\n )\n}\n\nfunction parseAPIErrorResponseBody(body: string):\n | {\n code: APIErrorCode\n message: string\n additional_data: AdditionalData | undefined\n request_id: string | undefined\n }\n | undefined {\n if (typeof body !== \"string\") {\n return\n }\n\n let parsed: unknown\n try {\n parsed = JSON.parse(body)\n } catch (parseError) {\n return\n }\n\n if (\n !isObject(parsed) ||\n typeof parsed[\"message\"] !== \"string\" ||\n !isAPIErrorCode(parsed[\"code\"])\n ) {\n return\n }\n\n const additional_data = parsed[\"additional_data\"] as\n | AdditionalData\n | undefined\n const request_id = parsed[\"request_id\"] as string | undefined\n\n return {\n ...parsed,\n code: parsed[\"code\"],\n message: parsed[\"message\"],\n additional_data,\n request_id,\n }\n}\n\nfunction isAPIErrorCode(code: unknown): code is APIErrorCode {\n return typeof code === \"string\" && code in apiErrorCodes\n}\n"]}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import { SupportedResponse } from \"./fetch-types\"\nimport { isObject } from \"./utils\"\nimport { Assert } from \"./type-utils\"\n\n/**\n * Error codes returned in responses from the API.\n */\nexport enum APIErrorCode {\n Unauthorized = \"unauthorized\",\n RestrictedResource = \"restricted_resource\",\n ObjectNotFound = \"object_not_found\",\n RateLimited = \"rate_limited\",\n InvalidJSON = \"invalid_json\",\n InvalidRequestURL = \"invalid_request_url\",\n InvalidRequest = \"invalid_request\",\n InvalidBeta = \"invalid_beta\",\n ValidationError = \"validation_error\",\n ConflictError = \"conflict_error\",\n InternalServerError = \"internal_server_error\",\n ServiceOverload = \"service_overload\",\n ServiceUnavailable = \"service_unavailable\",\n GatewayTimeout = \"gateway_timeout\",\n}\n\n/**\n * Error codes generated for client errors.\n */\nexport enum ClientErrorCode {\n RequestTimeout = \"notionhq_client_request_timeout\",\n ResponseError = \"notionhq_client_response_error\",\n InvalidPathParameter = \"notionhq_client_invalid_path_parameter\",\n}\n\n/**\n * Error codes on errors thrown by the `Client`.\n */\nexport type NotionErrorCode = APIErrorCode | ClientErrorCode\n\n/**\n * Base error type.\n */\nabstract class NotionClientErrorBase<\n Code extends NotionErrorCode,\n> extends Error {\n abstract code: Code\n}\n\n/**\n * Error type that encompasses all the kinds of errors that the Notion client will throw.\n */\nexport type NotionClientError =\n | RequestTimeoutError\n | UnknownHTTPResponseError\n | APIResponseError\n | InvalidPathParameterError\n\n// Assert that NotionClientError's `code` property is a narrow type.\n// This prevents us from accidentally regressing to `string`-typed name field.\ntype _assertCodeIsNarrow = Assert<NotionErrorCode, NotionClientError[\"code\"]>\n\n// Assert that the type of `name` in NotionErrorCode is a narrow type.\n// This prevents us from accidentally regressing to `string`-typed name field.\ntype _assertNameIsNarrow = Assert<\n | \"RequestTimeoutError\"\n | \"UnknownHTTPResponseError\"\n | \"APIResponseError\"\n | \"InvalidPathParameterError\",\n NotionClientError[\"name\"]\n>\n\n/**\n * @param error any value, usually a caught error.\n * @returns `true` if error is a `NotionClientError`.\n */\nexport function isNotionClientError(\n error: unknown\n): error is NotionClientError {\n return isObject(error) && error instanceof NotionClientErrorBase\n}\n\n/**\n * Narrows down the types of a NotionClientError.\n * @param error any value, usually a caught error.\n * @param codes an object mapping from possible error codes to `true`\n * @returns `true` if error is a `NotionClientError` with a code in `codes`.\n */\nfunction isNotionClientErrorWithCode<Code extends NotionErrorCode>(\n error: unknown,\n codes: { [C in Code]: true }\n): error is NotionClientError & { code: Code } {\n return isNotionClientError(error) && error.code in codes\n}\n\n/**\n * Error thrown by the client if a request times out.\n */\nexport class RequestTimeoutError extends NotionClientErrorBase<ClientErrorCode.RequestTimeout> {\n readonly code = ClientErrorCode.RequestTimeout\n readonly name = \"RequestTimeoutError\"\n\n constructor(message = \"Request to Notion API has timed out\") {\n super(message)\n }\n\n static isRequestTimeoutError(error: unknown): error is RequestTimeoutError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.RequestTimeout]: true,\n })\n }\n\n static rejectAfterTimeout<T>(\n promise: Promise<T>,\n timeoutMS: number\n ): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new RequestTimeoutError())\n }, timeoutMS)\n\n promise\n .then(resolve)\n .catch(reject)\n .then(() => clearTimeout(timeoutId))\n })\n }\n}\n\n/**\n * Error thrown when a path parameter contains invalid characters such as\n * path traversal sequences (..) that could alter the intended API endpoint.\n */\nexport class InvalidPathParameterError extends NotionClientErrorBase<ClientErrorCode.InvalidPathParameter> {\n readonly code = ClientErrorCode.InvalidPathParameter\n readonly name = \"InvalidPathParameterError\"\n\n constructor(\n message = \"Path parameter contains invalid characters that could alter the request path\"\n ) {\n super(message)\n }\n\n static isInvalidPathParameterError(\n error: unknown\n ): error is InvalidPathParameterError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.InvalidPathParameter]: true,\n })\n }\n}\n\n/**\n * Error thrown when the client would send a token or client secret from a\n * browser page or worker without `dangerouslyAllowBrowser: true`. Anyone who\n * can load the page can read the token, so this is blocked by default.\n *\n * This is a setup error, not an API error, so it is not a `NotionClientError`.\n */\nexport class BrowserTokenNotAllowedError extends Error {\n readonly name = \"BrowserTokenNotAllowedError\"\n\n constructor(\n message = \"It looks like you're running in a browser. Using a Notion \" +\n \"token here is blocked by default: anyone who can load the page can \" +\n \"read the token and act as your connection. Keep the token on a \" +\n \"server instead. If only you can open this page and you accept the \" +\n \"risk, pass `dangerouslyAllowBrowser: true` to the Client. See \" +\n \"https://developers.notion.com/guides/get-started/handling-api-keys#calling-the-api-from-a-browser\"\n ) {\n super(message)\n }\n}\n\n/**\n * Validates that a request path does not contain path traversal sequences.\n * Throws InvalidPathParameterError if the path contains \"..\" segments,\n * including URL-encoded variants like %2e%2e.\n */\nexport function validateRequestPath(path: string): void {\n // Check for literal path traversal\n if (path.includes(\"..\")) {\n throw new InvalidPathParameterError(\n `Request path \"${path}\" contains path traversal sequence \"..\"`\n )\n }\n\n // Check for URL-encoded path traversal (%2e = '.')\n // Only decode if path contains potential encoded dots\n if (/%2e/i.test(path)) {\n let decoded: string\n try {\n decoded = decodeURIComponent(path)\n } catch {\n // Invalid percent encoding - not a traversal concern\n return\n }\n if (decoded.includes(\"..\")) {\n throw new InvalidPathParameterError(\n `Request path \"${path}\" contains encoded path traversal sequence`\n )\n }\n }\n}\n\n/**\n * Reads a header by name from a `SupportedResponse[\"headers\"]`, which is typed\n * as `unknown` because the SDK supports any `fetch` implementation. Handles\n * both a standard `Headers` object and a plain record. Header names are\n * case-insensitive per RFC 9110, so plain records are matched case-insensitively.\n */\nexport function getResponseHeader(\n headers: unknown,\n name: string\n): string | undefined {\n if (!isObject(headers)) {\n return undefined\n }\n\n const get = headers[\"get\"]\n if (typeof get === \"function\") {\n const value: unknown = get.call(headers, name)\n return typeof value === \"string\" ? value : undefined\n }\n\n const lowerName = name.toLowerCase()\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() !== lowerName) {\n continue\n }\n if (typeof value === \"string\") {\n return value\n }\n if (Array.isArray(value) && typeof value[0] === \"string\") {\n return value[0]\n }\n }\n return undefined\n}\n\ntype HTTPResponseErrorCode = ClientErrorCode.ResponseError | APIErrorCode\n\ntype AdditionalData = Record<string, string | string[]>\n\nclass HTTPResponseError<\n Code extends HTTPResponseErrorCode,\n> extends NotionClientErrorBase<Code> {\n readonly name: string = \"HTTPResponseError\"\n readonly code: Code\n readonly status: number\n readonly headers: SupportedResponse[\"headers\"]\n readonly body: string\n readonly additional_data: AdditionalData | undefined\n readonly request_id: string | undefined\n /**\n * Value of the `cf-ray` response header, when present.\n */\n readonly ray_id: string | undefined\n\n constructor(args: {\n code: Code\n status: number\n message: string\n headers: SupportedResponse[\"headers\"]\n rawBodyText: string\n additional_data: AdditionalData | undefined\n request_id: string | undefined\n }) {\n super(args.message)\n const { code, status, headers, rawBodyText, additional_data, request_id } =\n args\n this.code = code\n this.status = status\n this.headers = headers\n this.body = rawBodyText\n this.additional_data = additional_data\n this.request_id =\n request_id ?? getResponseHeader(headers, \"x-notion-request-id\")\n this.ray_id = getResponseHeader(headers, \"cf-ray\")\n }\n}\n\nconst httpResponseErrorCodes: { [C in HTTPResponseErrorCode]: true } = {\n [ClientErrorCode.ResponseError]: true,\n [APIErrorCode.Unauthorized]: true,\n [APIErrorCode.RestrictedResource]: true,\n [APIErrorCode.ObjectNotFound]: true,\n [APIErrorCode.RateLimited]: true,\n [APIErrorCode.InvalidJSON]: true,\n [APIErrorCode.InvalidRequestURL]: true,\n [APIErrorCode.InvalidRequest]: true,\n [APIErrorCode.InvalidBeta]: true,\n [APIErrorCode.ValidationError]: true,\n [APIErrorCode.ConflictError]: true,\n [APIErrorCode.InternalServerError]: true,\n [APIErrorCode.ServiceOverload]: true,\n [APIErrorCode.ServiceUnavailable]: true,\n [APIErrorCode.GatewayTimeout]: true,\n}\n\nexport function isHTTPResponseError(\n error: unknown\n): error is UnknownHTTPResponseError | APIResponseError {\n if (!isNotionClientErrorWithCode(error, httpResponseErrorCodes)) {\n return false\n }\n\n type _assert = Assert<\n UnknownHTTPResponseError | APIResponseError,\n typeof error\n >\n\n return true\n}\n\n/**\n * Error thrown if an API call responds with an unknown error code, or does not respond with\n * a property-formatted error.\n */\nexport class UnknownHTTPResponseError extends HTTPResponseError<ClientErrorCode.ResponseError> {\n readonly name = \"UnknownHTTPResponseError\"\n\n constructor(args: {\n status: number\n message: string | undefined\n headers: SupportedResponse[\"headers\"]\n rawBodyText: string\n }) {\n const ray_id = getResponseHeader(args.headers, \"cf-ray\")\n const request_id = getResponseHeader(args.headers, \"x-notion-request-id\")\n super({\n ...args,\n code: ClientErrorCode.ResponseError,\n message:\n args.message ??\n buildUnknownResponseMessage({\n status: args.status,\n contentType: getResponseHeader(args.headers, \"content-type\"),\n ray_id,\n request_id,\n }),\n additional_data: undefined,\n request_id,\n })\n }\n\n static isUnknownHTTPResponseError(\n error: unknown\n ): error is UnknownHTTPResponseError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.ResponseError]: true,\n })\n }\n}\n\nconst apiErrorCodes: { [C in APIErrorCode]: true } = {\n [APIErrorCode.Unauthorized]: true,\n [APIErrorCode.RestrictedResource]: true,\n [APIErrorCode.ObjectNotFound]: true,\n [APIErrorCode.RateLimited]: true,\n [APIErrorCode.InvalidJSON]: true,\n [APIErrorCode.InvalidRequestURL]: true,\n [APIErrorCode.InvalidRequest]: true,\n [APIErrorCode.InvalidBeta]: true,\n [APIErrorCode.ValidationError]: true,\n [APIErrorCode.ConflictError]: true,\n [APIErrorCode.InternalServerError]: true,\n [APIErrorCode.ServiceOverload]: true,\n [APIErrorCode.ServiceUnavailable]: true,\n [APIErrorCode.GatewayTimeout]: true,\n}\n\n/**\n * A response from the API indicating a problem.\n * Use the `code` property to handle various kinds of errors. All its possible values are in `APIErrorCode`.\n */\nexport class APIResponseError extends HTTPResponseError<APIErrorCode> {\n readonly name = \"APIResponseError\"\n readonly request_id: string | undefined\n\n static isAPIResponseError(error: unknown): error is APIResponseError {\n return isNotionClientErrorWithCode(error, apiErrorCodes)\n }\n}\n\nexport function buildRequestError(\n response: SupportedResponse,\n bodyText: string\n): APIResponseError | UnknownHTTPResponseError {\n const apiErrorResponseBody = parseAPIErrorResponseBody(bodyText)\n if (apiErrorResponseBody !== undefined) {\n return new APIResponseError({\n code: apiErrorResponseBody.code,\n message: apiErrorResponseBody.message,\n headers: response.headers,\n status: response.status,\n rawBodyText: bodyText,\n additional_data: apiErrorResponseBody.additional_data,\n request_id: apiErrorResponseBody.request_id,\n })\n }\n return new UnknownHTTPResponseError({\n message: undefined,\n headers: response.headers,\n status: response.status,\n rawBodyText: bodyText,\n })\n}\n\n/**\n * Builds the default message for an unrecognized HTTP response.\n *\n * A response with a Cloudflare Ray ID but no Notion request ID was answered\n * before it reached the API. The message surfaces the Ray ID rather than\n * leaving callers to infer it from an HTML body.\n */\nfunction buildUnknownResponseMessage(args: {\n status: number\n contentType: string | undefined\n ray_id: string | undefined\n request_id: string | undefined\n}): string {\n const { status, contentType, ray_id, request_id } = args\n const base = `Request to Notion API failed with status: ${status}`\n if (ray_id === undefined || request_id !== undefined) {\n return base\n }\n const contentTypeNote =\n contentType !== undefined ? ` (content-type: ${contentType})` : \"\"\n const blockedRequestNote =\n status === 403\n ? \" This may mean the request was blocked by a network security rule.\"\n : \"\"\n return (\n `${base}. The response was returned by Notion's edge proxy before reaching ` +\n `the Notion API${contentTypeNote}.${blockedRequestNote} Cloudflare Ray ID: ` +\n `${ray_id}. Include this ID when contacting Notion support.`\n )\n}\n\nfunction parseAPIErrorResponseBody(body: string):\n | {\n code: APIErrorCode\n message: string\n additional_data: AdditionalData | undefined\n request_id: string | undefined\n }\n | undefined {\n if (typeof body !== \"string\") {\n return\n }\n\n let parsed: unknown\n try {\n parsed = JSON.parse(body)\n } catch (parseError) {\n return\n }\n\n if (\n !isObject(parsed) ||\n typeof parsed[\"message\"] !== \"string\" ||\n !isAPIErrorCode(parsed[\"code\"])\n ) {\n return\n }\n\n const additional_data = parsed[\"additional_data\"] as\n AdditionalData | undefined\n const request_id = parsed[\"request_id\"] as string | undefined\n\n return {\n ...parsed,\n code: parsed[\"code\"],\n message: parsed[\"message\"],\n additional_data,\n request_id,\n }\n}\n\nfunction isAPIErrorCode(code: unknown): code is APIErrorCode {\n return typeof code === \"string\" && code in apiErrorCodes\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,EAC3B,kBAAkB,EAClB,0BAA0B,EAC1B,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EACnB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAElC,KAAK,aAAa,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B,CAAA;AAED,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAuB,mBAAmB,CAAC,IAAI,SAAS,aAAa,EAAE,IAAI,EACzE,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EACpD,aAAa,EAAE,IAAI,GAClB,qBAAqB,CAAC,IAAI,CAAC,CAU7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,SAAS,aAAa,EAAE,IAAI,EACxE,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EACpD,aAAa,EAAE,IAAI,GAClB,OAAO,CAAC,IAAI,EAAE,CAAC,CAMjB;AAED,KAAK,kBAAkB,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9E,KAAK,2BAA2B,GAAG,aAAa,GAAG;IACjD,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAuB,0BAA0B,CAC/C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EACnC,IAAI,EAAE,2BAA2B,GAChC,qBAAqB,CAAC,kBAAkB,CAAC,CAW3C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EACnC,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAM/B;AAED,KAAK,aAAa,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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"}
|
package/build/src/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BlockObjectResponse,\n CommentObjectResponse,\n DatabaseObjectResponse,\n DataSourceObjectResponse,\n DataSourceViewObjectResponse,\n EquationRichTextItemResponse,\n GroupFilterOperatorArray,\n ListDataSourceTemplatesResponse,\n MentionRichTextItemResponse,\n PageObjectResponse,\n PartialBlockObjectResponse,\n PartialCommentObjectResponse,\n PartialDatabaseObjectResponse,\n PartialDataSourceObjectResponse,\n PartialDataSourceViewObjectResponse,\n PartialPageObjectResponse,\n PartialUserObjectResponse,\n PropertyFilter,\n QueryDataSourceParameters,\n QueryDataSourceResponse,\n RichTextItemResponse,\n RichTextItemResponseCommon,\n TextRichTextItemResponse,\n TimestampFilter,\n UserObjectResponse,\n} from \"./api-endpoints\"\nimport type Client from \"./Client\"\n\ntype PaginatedArgs = {\n start_cursor?: string | null\n}\n\ntype PaginatedList<T> = {\n object: \"list\"\n results: T[]\n next_cursor: string | null\n has_more: boolean\n}\n\n/**\n * Returns an async iterator over the results of any paginated Notion API.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * for await (const block of iteratePaginatedAPI(notion.blocks.children.list, {\n * block_id: parentBlockId,\n * })) {\n * // Do something with block.\n * }\n * ```\n *\n * @param listFn A bound function on the Notion client that represents a conforming paginated\n * API. Example: `notion.blocks.children.list`.\n * @param firstPageArgs Arguments that should be passed to the API on the first and subsequent\n * calls to the API. Any necessary `next_cursor` will be automatically populated by\n * this function. Example: `{ block_id: \"<my block id>\" }`\n */\nexport async function* iteratePaginatedAPI<Args extends PaginatedArgs, Item>(\n listFn: (args: Args) => Promise<PaginatedList<Item>>,\n firstPageArgs: Args\n): AsyncIterableIterator<Item> {\n let nextCursor: string | null | undefined = firstPageArgs.start_cursor\n do {\n const response: PaginatedList<Item> = await listFn({\n ...firstPageArgs,\n start_cursor: nextCursor,\n })\n yield* response.results\n nextCursor = response.next_cursor\n } while (nextCursor)\n}\n\n/**\n * Collect all of the results of paginating an API into an in-memory array.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * const blocks = await collectPaginatedAPI(notion.blocks.children.list, {\n * block_id: parentBlockId,\n * })\n * // Do something with blocks.\n * ```\n *\n * @param listFn A bound function on the Notion client that represents a conforming paginated\n * API. Example: `notion.blocks.children.list`.\n * @param firstPageArgs Arguments that should be passed to the API on the first and subsequent\n * calls to the API. Any necessary `next_cursor` will be automatically populated by\n * this function. Example: `{ block_id: \"<my block id>\" }`\n */\nexport async function collectPaginatedAPI<Args extends PaginatedArgs, Item>(\n listFn: (args: Args) => Promise<PaginatedList<Item>>,\n firstPageArgs: Args\n): Promise<Item[]> {\n const results: Item[] = []\n for await (const item of iteratePaginatedAPI(listFn, firstPageArgs)) {\n results.push(item)\n }\n return results\n}\n\ntype DataSourceTemplate = ListDataSourceTemplatesResponse[\"templates\"][number]\n\ntype ListDataSourceTemplatesArgs = PaginatedArgs & {\n data_source_id: string\n name?: string\n page_size?: number\n}\n\n/**\n * Returns an async iterator over data source templates.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * for await (const template of iterateDataSourceTemplates(notion, {\n * data_source_id: dataSourceId,\n * })) {\n * console.log(template.name, template.is_default)\n * }\n * ```\n *\n * @param client A Notion client instance.\n * @param args Arguments including the data_source_id and optional start_cursor.\n */\nexport async function* iterateDataSourceTemplates(\n client: Pick<Client, \"dataSources\">,\n args: ListDataSourceTemplatesArgs\n): AsyncIterableIterator<DataSourceTemplate> {\n let nextCursor: string | null | undefined = args.start_cursor\n do {\n const response: ListDataSourceTemplatesResponse =\n await client.dataSources.listTemplates({\n ...args,\n start_cursor: nextCursor,\n })\n yield* response.templates\n nextCursor = response.next_cursor\n } while (nextCursor)\n}\n\n/**\n * Collect all data source templates into an in-memory array.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * const templates = await collectDataSourceTemplates(notion, {\n * data_source_id: dataSourceId,\n * })\n * // Do something with templates.\n * ```\n *\n * @param client A Notion client instance.\n * @param args Arguments including the data_source_id and optional start_cursor.\n */\nexport async function collectDataSourceTemplates(\n client: Pick<Client, \"dataSources\">,\n args: ListDataSourceTemplatesArgs\n): Promise<DataSourceTemplate[]> {\n const results: DataSourceTemplate[] = []\n for await (const template of iterateDataSourceTemplates(client, args)) {\n results.push(template)\n }\n return results\n}\n\ntype DataSourceRow = QueryDataSourceResponse[\"results\"][number]\n\n/**\n * A filter the full-query helpers can combine with a created_time window bound.\n *\n * A top-level `or` filter is intentionally excluded: the helpers add a\n * created_time lower bound with `and`, and Notion only supports two levels of\n * filter nesting, so an `or` at the root leaves no room for the bound. Express\n * such queries as an `and` group, or run the helper once per `or` branch and\n * merge the results.\n */\nexport type FullDataSourceQueryFilter =\n | PropertyFilter\n | TimestampFilter\n | { and: GroupFilterOperatorArray }\n\n/**\n * Arguments for the full-query helpers. The same as `dataSources.query`, minus\n * the fields the helper controls: `start_cursor` (pagination is automatic) and\n * `sorts` (the helper sorts by created_time to partition). `filter` is narrowed\n * to {@link FullDataSourceQueryFilter}.\n */\nexport type FullDataSourceQueryArgs = Omit<\n QueryDataSourceParameters,\n \"start_cursor\" | \"sorts\" | \"filter\"\n> & {\n filter?: FullDataSourceQueryFilter\n}\n\n/**\n * Iterate over every row of a data source, including rows past the per-query\n * result limit that `dataSources.query` enforces on large data sources.\n *\n * A single query (one filter and sort) returns at most a fixed number of rows\n * (10,000 by default). Once that limit is reached, `has_more` becomes `false`\n * and the response carries `request_status.type === \"incomplete\"`. Plain\n * pagination such as {@link iteratePaginatedAPI} stops there and silently\n * misses the rest of the data source.\n *\n * This helper works around the limit by partitioning the data source into\n * created_time windows. It sorts by created_time ascending; whenever a window\n * reaches the limit, it starts a fresh query from the last row's created_time.\n * Each fresh query has a different filter, so it gets its own result budget.\n * Rows that share a boundary timestamp are de-duplicated by id, so every row is\n * yielded exactly once.\n *\n * created_time is used because it never changes. last_edited_time would shift\n * rows between windows as they are edited, causing gaps or duplicates.\n *\n * Throws if a single created_time value holds more rows than the limit, since\n * the window cannot be narrowed by time alone. Add a filter in that case so\n * each window stays under the limit.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * for await (const row of iterateAllDataSourceRows(notion, {\n * data_source_id: dataSourceId,\n * })) {\n * // Do something with row.\n * }\n * ```\n *\n * @param client A Notion client instance.\n * @param args Query arguments. `start_cursor` and `sorts` are managed by the\n * helper; `filter` is combined with the created_time window bound.\n */\nexport async function* iterateAllDataSourceRows(\n client: Pick<Client, \"dataSources\">,\n args: FullDataSourceQueryArgs\n): AsyncIterableIterator<DataSourceRow> {\n const seenRowIds = new Set<string>()\n let windowStart: string | undefined = undefined\n\n for (;;) {\n let limitReached = false\n let lastCreatedTime: string | undefined = undefined\n let cursor: string | undefined = undefined\n\n do {\n const response = await client.dataSources.query({\n ...args,\n sorts: [{ timestamp: \"created_time\", direction: \"ascending\" }],\n filter: createdTimeLowerBound(args.filter, windowStart),\n start_cursor: cursor,\n })\n for (const row of response.results) {\n // Wiki data sources can return child data-source rows alongside pages.\n // Both carry created_time and either can be the window's boundary row,\n // so advance on either; reading only pages would stall a window made up\n // of data-source rows and throw spuriously.\n if (isFullPageOrDataSource(row)) {\n lastCreatedTime = row.created_time\n }\n if (!seenRowIds.has(row.id)) {\n seenRowIds.add(row.id)\n yield row\n }\n }\n if (response.request_status?.type === \"incomplete\") {\n limitReached = true\n }\n cursor = response.next_cursor ?? undefined\n } while (cursor)\n\n if (!limitReached) {\n return\n }\n if (lastCreatedTime === undefined || lastCreatedTime === windowStart) {\n throw new Error(\n \"iterateAllDataSourceRows cannot make progress: the per-query result \" +\n \"limit was reached but the created_time window could not advance \" +\n `past ${String(lastCreatedTime)}. More rows share this timestamp ` +\n \"than the limit allows. Add a filter to narrow the query.\"\n )\n }\n windowStart = lastCreatedTime\n }\n}\n\n/**\n * Collect every row of a data source into an in-memory array, including rows\n * past the per-query result limit. See {@link iterateAllDataSourceRows} for how\n * the limit is handled.\n *\n * Before using this, check that the full data source fits in memory. For very\n * large data sources, prefer {@link iterateAllDataSourceRows} and process rows\n * as they stream.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * const rows = await collectAllDataSourceRows(notion, {\n * data_source_id: dataSourceId,\n * })\n * // Do something with rows.\n * ```\n *\n * @param client A Notion client instance.\n * @param args Query arguments. See {@link iterateAllDataSourceRows}.\n */\nexport async function collectAllDataSourceRows(\n client: Pick<Client, \"dataSources\">,\n args: FullDataSourceQueryArgs\n): Promise<DataSourceRow[]> {\n const rows: DataSourceRow[] = []\n for await (const row of iterateAllDataSourceRows(client, args)) {\n rows.push(row)\n }\n return rows\n}\n\n/**\n * Combine a caller-provided filter with the created_time lower bound used to\n * advance the partition window. Returns the filter unchanged for the first\n * window, which has no bound yet.\n */\nfunction createdTimeLowerBound(\n filter: FullDataSourceQueryFilter | undefined,\n windowStart: string | undefined\n): FullDataSourceQueryFilter | undefined {\n if (windowStart === undefined) {\n return filter\n }\n const bound: TimestampFilter = {\n timestamp: \"created_time\",\n created_time: { on_or_after: windowStart },\n }\n if (filter === undefined) {\n return bound\n }\n if (\"and\" in filter) {\n return { and: [...filter.and, bound] }\n }\n return { and: [filter, bound] }\n}\n\ntype ObjectResponse =\n | PageObjectResponse\n | PartialPageObjectResponse\n | DataSourceObjectResponse\n | PartialDataSourceObjectResponse\n | DatabaseObjectResponse\n | PartialDatabaseObjectResponse\n | BlockObjectResponse\n | PartialBlockObjectResponse\n\n/**\n * @returns `true` if `response` is a full `BlockObjectResponse`.\n */\nexport function isFullBlock(\n response: ObjectResponse\n): response is BlockObjectResponse {\n return response.object === \"block\" && \"type\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `PageObjectResponse`.\n */\nexport function isFullPage(\n response: ObjectResponse\n): response is PageObjectResponse {\n return response.object === \"page\" && \"url\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `DataSourceObjectResponse`.\n */\nexport function isFullDataSource(\n response: ObjectResponse\n): response is DataSourceObjectResponse {\n return response.object === \"data_source\" && \"title\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `DatabaseObjectResponse`.\n */\nexport function isFullDatabase(\n response: ObjectResponse\n): response is DatabaseObjectResponse {\n return response.object === \"database\" && \"title\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `DataSourceObjectResponse` or a full\n * `PageObjectResponse`.\n *\n * Can be used on the results of the list response from `queryDataSource` or\n * `search` APIs.\n */\nexport function isFullPageOrDataSource(\n response: ObjectResponse\n): response is DataSourceObjectResponse | PageObjectResponse {\n if (response.object === \"data_source\") {\n return isFullDataSource(response)\n } else {\n return isFullPage(response)\n }\n}\n\n/**\n * @returns `true` if `response` is a full `UserObjectResponse`.\n */\nexport function isFullUser(\n response: UserObjectResponse | PartialUserObjectResponse\n): response is UserObjectResponse {\n return \"type\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `CommentObjectResponse`.\n */\nexport function isFullComment(\n response: CommentObjectResponse | PartialCommentObjectResponse\n): response is CommentObjectResponse {\n return \"created_by\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `DataSourceViewObjectResponse`.\n */\nexport function isFullView(\n response: DataSourceViewObjectResponse | PartialDataSourceViewObjectResponse\n): response is DataSourceViewObjectResponse {\n return \"type\" in response\n}\n\n/**\n * @returns `true` if `richText` is a `TextRichTextItemResponse`.\n */\nexport function isTextRichTextItemResponse(\n richText: RichTextItemResponse\n): richText is RichTextItemResponseCommon & TextRichTextItemResponse {\n return richText.type === \"text\"\n}\n\n/**\n * @returns `true` if `richText` is an `EquationRichTextItemResponse`.\n */\nexport function isEquationRichTextItemResponse(\n richText: RichTextItemResponse\n): richText is RichTextItemResponseCommon & EquationRichTextItemResponse {\n return richText.type === \"equation\"\n}\n\n/**\n * @returns `true` if `richText` is an `MentionRichTextItemResponse`.\n */\nexport function isMentionRichTextItemResponse(\n richText: RichTextItemResponse\n): richText is RichTextItemResponseCommon & MentionRichTextItemResponse {\n return richText.type === \"mention\"\n}\n\n/**\n * Extracts a Notion ID from a Notion URL or returns the input if it's already a valid ID.\n *\n * Prioritizes path IDs over query parameters to avoid extracting view IDs instead of database IDs.\n *\n * @param urlOrId A Notion URL or ID string\n * @returns The extracted UUID in standard format (with hyphens) or null if invalid\n *\n * @example\n * ```typescript\n * // Database URL with view ID - extracts database ID, not view ID\n * extractNotionId('https://notion.so/workspace/DB-abc123def456789012345678901234ab?v=viewid123')\n * // Returns: 'abc123de-f456-7890-1234-5678901234ab' (database ID)\n *\n * // Already formatted UUID\n * extractNotionId('12345678-1234-1234-1234-123456789abc')\n * // Returns: '12345678-1234-1234-1234-123456789abc'\n * ```\n */\nexport function extractNotionId(urlOrId: string): string | null {\n if (!urlOrId || typeof urlOrId !== \"string\") {\n return null\n }\n\n const trimmed = urlOrId.trim()\n\n // Check if it's already a properly formatted UUID\n const uuidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i\n if (uuidRegex.test(trimmed)) {\n return trimmed.toLowerCase()\n }\n\n // Check if it's a compact UUID (32 chars, no hyphens)\n const compactUuidRegex = /^[0-9a-f]{32}$/i\n if (compactUuidRegex.test(trimmed)) {\n return formatUuid(trimmed)\n }\n\n // Extract from URL - prioritize path over query parameters\n // This prevents extracting view IDs when database IDs are in the path\n // The title slug is optional: Notion also copies links with a bare ID path.\n const pathMatch = trimmed.match(/\\/(?:[^/?#]*-)?([0-9a-f]{32})(?:[/?#]|$)/i)\n if (pathMatch && pathMatch[1]) {\n return formatUuid(pathMatch[1])\n }\n\n // Fallback to query parameters if no path ID found\n const queryMatch = trimmed.match(\n /[?&](?:p|page_id|database_id)=([0-9a-f]{32})/i\n )\n if (queryMatch && queryMatch[1]) {\n return formatUuid(queryMatch[1])\n }\n\n // Last resort: any 32-char hex string in the URL\n const anyMatch = trimmed.match(/([0-9a-f]{32})/i)\n if (anyMatch && anyMatch[1]) {\n return formatUuid(anyMatch[1])\n }\n\n return null\n}\n\n/**\n * Formats a 32-character hex string into a standard UUID format.\n * @param compactId 32-character hex string without hyphens\n * @returns UUID with hyphens in standard format\n */\nfunction formatUuid(compactId: string): string {\n const clean = compactId.toLowerCase()\n return `${clean.slice(0, 8)}-${clean.slice(8, 12)}-${clean.slice(\n 12,\n 16\n )}-${clean.slice(16, 20)}-${clean.slice(20, 32)}`\n}\n\n/**\n * Extracts a database ID from a Notion database URL.\n * Convenience wrapper around `extractNotionId`.\n */\nexport function extractDatabaseId(databaseUrl: string): string | null {\n return extractNotionId(databaseUrl)\n}\n\n/**\n * Extracts a page ID from a Notion page URL.\n * Convenience wrapper around `extractNotionId`.\n */\nexport function extractPageId(pageUrl: string): string | null {\n return extractNotionId(pageUrl)\n}\n\n/**\n * Extracts a block ID from a Notion URL with a block fragment.\n * Looks for #block-<id> or #<id> patterns.\n */\nexport function extractBlockId(urlWithBlock: string): string | null {\n if (!urlWithBlock || typeof urlWithBlock !== \"string\") {\n return null\n }\n\n // Look for block fragment in URL (#block-32chars or just #32chars)\n const blockMatch = urlWithBlock.match(/#(?:block-)?([0-9a-f]{32})/i)\n if (blockMatch && blockMatch[1]) {\n return formatUuid(blockMatch[1])\n }\n\n return null\n}\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BlockObjectResponse,\n CommentObjectResponse,\n DatabaseObjectResponse,\n DataSourceObjectResponse,\n DataSourceViewObjectResponse,\n EquationRichTextItemResponse,\n GroupFilterOperatorArray,\n ListDataSourceTemplatesResponse,\n MentionRichTextItemResponse,\n PageObjectResponse,\n PartialBlockObjectResponse,\n PartialCommentObjectResponse,\n PartialDatabaseObjectResponse,\n PartialDataSourceObjectResponse,\n PartialDataSourceViewObjectResponse,\n PartialPageObjectResponse,\n PartialUserObjectResponse,\n PropertyFilter,\n QueryDataSourceParameters,\n QueryDataSourceResponse,\n RichTextItemResponse,\n RichTextItemResponseCommon,\n TextRichTextItemResponse,\n TimestampFilter,\n UserObjectResponse,\n} from \"./api-endpoints\"\nimport type Client from \"./Client\"\n\ntype PaginatedArgs = {\n start_cursor?: string | null\n}\n\ntype PaginatedList<T> = {\n object: \"list\"\n results: T[]\n next_cursor: string | null\n has_more: boolean\n}\n\n/**\n * Returns an async iterator over the results of any paginated Notion API.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * for await (const block of iteratePaginatedAPI(notion.blocks.children.list, {\n * block_id: parentBlockId,\n * })) {\n * // Do something with block.\n * }\n * ```\n *\n * @param listFn A bound function on the Notion client that represents a conforming paginated\n * API. Example: `notion.blocks.children.list`.\n * @param firstPageArgs Arguments that should be passed to the API on the first and subsequent\n * calls to the API. Any necessary `next_cursor` will be automatically populated by\n * this function. Example: `{ block_id: \"<my block id>\" }`\n */\nexport async function* iteratePaginatedAPI<Args extends PaginatedArgs, Item>(\n listFn: (args: Args) => Promise<PaginatedList<Item>>,\n firstPageArgs: Args\n): AsyncIterableIterator<Item> {\n let nextCursor: string | null | undefined = firstPageArgs.start_cursor\n do {\n const response: PaginatedList<Item> = await listFn({\n ...firstPageArgs,\n start_cursor: nextCursor,\n })\n yield* response.results\n nextCursor = response.next_cursor\n } while (nextCursor)\n}\n\n/**\n * Collect all of the results of paginating an API into an in-memory array.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * const blocks = await collectPaginatedAPI(notion.blocks.children.list, {\n * block_id: parentBlockId,\n * })\n * // Do something with blocks.\n * ```\n *\n * @param listFn A bound function on the Notion client that represents a conforming paginated\n * API. Example: `notion.blocks.children.list`.\n * @param firstPageArgs Arguments that should be passed to the API on the first and subsequent\n * calls to the API. Any necessary `next_cursor` will be automatically populated by\n * this function. Example: `{ block_id: \"<my block id>\" }`\n */\nexport async function collectPaginatedAPI<Args extends PaginatedArgs, Item>(\n listFn: (args: Args) => Promise<PaginatedList<Item>>,\n firstPageArgs: Args\n): Promise<Item[]> {\n const results: Item[] = []\n for await (const item of iteratePaginatedAPI(listFn, firstPageArgs)) {\n results.push(item)\n }\n return results\n}\n\ntype DataSourceTemplate = ListDataSourceTemplatesResponse[\"templates\"][number]\n\ntype ListDataSourceTemplatesArgs = PaginatedArgs & {\n data_source_id: string\n name?: string\n page_size?: number\n}\n\n/**\n * Returns an async iterator over data source templates.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * for await (const template of iterateDataSourceTemplates(notion, {\n * data_source_id: dataSourceId,\n * })) {\n * console.log(template.name, template.is_default)\n * }\n * ```\n *\n * @param client A Notion client instance.\n * @param args Arguments including the data_source_id and optional start_cursor.\n */\nexport async function* iterateDataSourceTemplates(\n client: Pick<Client, \"dataSources\">,\n args: ListDataSourceTemplatesArgs\n): AsyncIterableIterator<DataSourceTemplate> {\n let nextCursor: string | null | undefined = args.start_cursor\n do {\n const response: ListDataSourceTemplatesResponse =\n await client.dataSources.listTemplates({\n ...args,\n start_cursor: nextCursor,\n })\n yield* response.templates\n nextCursor = response.next_cursor\n } while (nextCursor)\n}\n\n/**\n * Collect all data source templates into an in-memory array.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * const templates = await collectDataSourceTemplates(notion, {\n * data_source_id: dataSourceId,\n * })\n * // Do something with templates.\n * ```\n *\n * @param client A Notion client instance.\n * @param args Arguments including the data_source_id and optional start_cursor.\n */\nexport async function collectDataSourceTemplates(\n client: Pick<Client, \"dataSources\">,\n args: ListDataSourceTemplatesArgs\n): Promise<DataSourceTemplate[]> {\n const results: DataSourceTemplate[] = []\n for await (const template of iterateDataSourceTemplates(client, args)) {\n results.push(template)\n }\n return results\n}\n\ntype DataSourceRow = QueryDataSourceResponse[\"results\"][number]\n\n/**\n * A filter the full-query helpers can combine with a created_time window bound.\n *\n * A top-level `or` filter is intentionally excluded: the helpers add a\n * created_time lower bound with `and`, and Notion only supports two levels of\n * filter nesting, so an `or` at the root leaves no room for the bound. Express\n * such queries as an `and` group, or run the helper once per `or` branch and\n * merge the results.\n */\nexport type FullDataSourceQueryFilter =\n PropertyFilter | TimestampFilter | { and: GroupFilterOperatorArray }\n\n/**\n * Arguments for the full-query helpers. The same as `dataSources.query`, minus\n * the fields the helper controls: `start_cursor` (pagination is automatic) and\n * `sorts` (the helper sorts by created_time to partition). `filter` is narrowed\n * to {@link FullDataSourceQueryFilter}.\n */\nexport type FullDataSourceQueryArgs = Omit<\n QueryDataSourceParameters,\n \"start_cursor\" | \"sorts\" | \"filter\"\n> & {\n filter?: FullDataSourceQueryFilter\n}\n\n/**\n * Iterate over every row of a data source, including rows past the per-query\n * result limit that `dataSources.query` enforces on large data sources.\n *\n * A single query (one filter and sort) returns at most a fixed number of rows\n * (10,000 by default). Once that limit is reached, `has_more` becomes `false`\n * and the response carries `request_status.type === \"incomplete\"`. Plain\n * pagination such as {@link iteratePaginatedAPI} stops there and silently\n * misses the rest of the data source.\n *\n * This helper works around the limit by partitioning the data source into\n * created_time windows. It sorts by created_time ascending; whenever a window\n * reaches the limit, it starts a fresh query from the last row's created_time.\n * Each fresh query has a different filter, so it gets its own result budget.\n * Rows that share a boundary timestamp are de-duplicated by id, so every row is\n * yielded exactly once.\n *\n * created_time is used because it never changes. last_edited_time would shift\n * rows between windows as they are edited, causing gaps or duplicates.\n *\n * Throws if a single created_time value holds more rows than the limit, since\n * the window cannot be narrowed by time alone. Add a filter in that case so\n * each window stays under the limit.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * for await (const row of iterateAllDataSourceRows(notion, {\n * data_source_id: dataSourceId,\n * })) {\n * // Do something with row.\n * }\n * ```\n *\n * @param client A Notion client instance.\n * @param args Query arguments. `start_cursor` and `sorts` are managed by the\n * helper; `filter` is combined with the created_time window bound.\n */\nexport async function* iterateAllDataSourceRows(\n client: Pick<Client, \"dataSources\">,\n args: FullDataSourceQueryArgs\n): AsyncIterableIterator<DataSourceRow> {\n const seenRowIds = new Set<string>()\n let windowStart: string | undefined = undefined\n\n for (;;) {\n let limitReached = false\n let lastCreatedTime: string | undefined = undefined\n let cursor: string | undefined = undefined\n\n do {\n const response = await client.dataSources.query({\n ...args,\n sorts: [{ timestamp: \"created_time\", direction: \"ascending\" }],\n filter: createdTimeLowerBound(args.filter, windowStart),\n start_cursor: cursor,\n })\n for (const row of response.results) {\n // Wiki data sources can return child data-source rows alongside pages.\n // Both carry created_time and either can be the window's boundary row,\n // so advance on either; reading only pages would stall a window made up\n // of data-source rows and throw spuriously.\n if (isFullPageOrDataSource(row)) {\n lastCreatedTime = row.created_time\n }\n if (!seenRowIds.has(row.id)) {\n seenRowIds.add(row.id)\n yield row\n }\n }\n if (response.request_status?.type === \"incomplete\") {\n limitReached = true\n }\n cursor = response.next_cursor ?? undefined\n } while (cursor)\n\n if (!limitReached) {\n return\n }\n if (lastCreatedTime === undefined || lastCreatedTime === windowStart) {\n throw new Error(\n \"iterateAllDataSourceRows cannot make progress: the per-query result \" +\n \"limit was reached but the created_time window could not advance \" +\n `past ${String(lastCreatedTime)}. More rows share this timestamp ` +\n \"than the limit allows. Add a filter to narrow the query.\"\n )\n }\n windowStart = lastCreatedTime\n }\n}\n\n/**\n * Collect every row of a data source into an in-memory array, including rows\n * past the per-query result limit. See {@link iterateAllDataSourceRows} for how\n * the limit is handled.\n *\n * Before using this, check that the full data source fits in memory. For very\n * large data sources, prefer {@link iterateAllDataSourceRows} and process rows\n * as they stream.\n *\n * Example (given a notion Client called `notion`):\n *\n * ```\n * const rows = await collectAllDataSourceRows(notion, {\n * data_source_id: dataSourceId,\n * })\n * // Do something with rows.\n * ```\n *\n * @param client A Notion client instance.\n * @param args Query arguments. See {@link iterateAllDataSourceRows}.\n */\nexport async function collectAllDataSourceRows(\n client: Pick<Client, \"dataSources\">,\n args: FullDataSourceQueryArgs\n): Promise<DataSourceRow[]> {\n const rows: DataSourceRow[] = []\n for await (const row of iterateAllDataSourceRows(client, args)) {\n rows.push(row)\n }\n return rows\n}\n\n/**\n * Combine a caller-provided filter with the created_time lower bound used to\n * advance the partition window. Returns the filter unchanged for the first\n * window, which has no bound yet.\n */\nfunction createdTimeLowerBound(\n filter: FullDataSourceQueryFilter | undefined,\n windowStart: string | undefined\n): FullDataSourceQueryFilter | undefined {\n if (windowStart === undefined) {\n return filter\n }\n const bound: TimestampFilter = {\n timestamp: \"created_time\",\n created_time: { on_or_after: windowStart },\n }\n if (filter === undefined) {\n return bound\n }\n if (\"and\" in filter) {\n return { and: [...filter.and, bound] }\n }\n return { and: [filter, bound] }\n}\n\ntype ObjectResponse =\n | PageObjectResponse\n | PartialPageObjectResponse\n | DataSourceObjectResponse\n | PartialDataSourceObjectResponse\n | DatabaseObjectResponse\n | PartialDatabaseObjectResponse\n | BlockObjectResponse\n | PartialBlockObjectResponse\n\n/**\n * @returns `true` if `response` is a full `BlockObjectResponse`.\n */\nexport function isFullBlock(\n response: ObjectResponse\n): response is BlockObjectResponse {\n return response.object === \"block\" && \"type\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `PageObjectResponse`.\n */\nexport function isFullPage(\n response: ObjectResponse\n): response is PageObjectResponse {\n return response.object === \"page\" && \"url\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `DataSourceObjectResponse`.\n */\nexport function isFullDataSource(\n response: ObjectResponse\n): response is DataSourceObjectResponse {\n return response.object === \"data_source\" && \"title\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `DatabaseObjectResponse`.\n */\nexport function isFullDatabase(\n response: ObjectResponse\n): response is DatabaseObjectResponse {\n return response.object === \"database\" && \"title\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `DataSourceObjectResponse` or a full\n * `PageObjectResponse`.\n *\n * Can be used on the results of the list response from `queryDataSource` or\n * `search` APIs.\n */\nexport function isFullPageOrDataSource(\n response: ObjectResponse\n): response is DataSourceObjectResponse | PageObjectResponse {\n if (response.object === \"data_source\") {\n return isFullDataSource(response)\n } else {\n return isFullPage(response)\n }\n}\n\n/**\n * @returns `true` if `response` is a full `UserObjectResponse`.\n */\nexport function isFullUser(\n response: UserObjectResponse | PartialUserObjectResponse\n): response is UserObjectResponse {\n return \"type\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `CommentObjectResponse`.\n */\nexport function isFullComment(\n response: CommentObjectResponse | PartialCommentObjectResponse\n): response is CommentObjectResponse {\n return \"created_by\" in response\n}\n\n/**\n * @returns `true` if `response` is a full `DataSourceViewObjectResponse`.\n */\nexport function isFullView(\n response: DataSourceViewObjectResponse | PartialDataSourceViewObjectResponse\n): response is DataSourceViewObjectResponse {\n return \"type\" in response\n}\n\n/**\n * @returns `true` if `richText` is a `TextRichTextItemResponse`.\n */\nexport function isTextRichTextItemResponse(\n richText: RichTextItemResponse\n): richText is RichTextItemResponseCommon & TextRichTextItemResponse {\n return richText.type === \"text\"\n}\n\n/**\n * @returns `true` if `richText` is an `EquationRichTextItemResponse`.\n */\nexport function isEquationRichTextItemResponse(\n richText: RichTextItemResponse\n): richText is RichTextItemResponseCommon & EquationRichTextItemResponse {\n return richText.type === \"equation\"\n}\n\n/**\n * @returns `true` if `richText` is an `MentionRichTextItemResponse`.\n */\nexport function isMentionRichTextItemResponse(\n richText: RichTextItemResponse\n): richText is RichTextItemResponseCommon & MentionRichTextItemResponse {\n return richText.type === \"mention\"\n}\n\n/**\n * Extracts a Notion ID from a Notion URL or returns the input if it's already a valid ID.\n *\n * Prioritizes path IDs over query parameters to avoid extracting view IDs instead of database IDs.\n *\n * @param urlOrId A Notion URL or ID string\n * @returns The extracted UUID in standard format (with hyphens) or null if invalid\n *\n * @example\n * ```typescript\n * // Database URL with view ID - extracts database ID, not view ID\n * extractNotionId('https://notion.so/workspace/DB-abc123def456789012345678901234ab?v=viewid123')\n * // Returns: 'abc123de-f456-7890-1234-5678901234ab' (database ID)\n *\n * // Already formatted UUID\n * extractNotionId('12345678-1234-1234-1234-123456789abc')\n * // Returns: '12345678-1234-1234-1234-123456789abc'\n * ```\n */\nexport function extractNotionId(urlOrId: string): string | null {\n if (!urlOrId || typeof urlOrId !== \"string\") {\n return null\n }\n\n const trimmed = urlOrId.trim()\n\n // Check if it's already a properly formatted UUID\n const uuidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i\n if (uuidRegex.test(trimmed)) {\n return trimmed.toLowerCase()\n }\n\n // Check if it's a compact UUID (32 chars, no hyphens)\n const compactUuidRegex = /^[0-9a-f]{32}$/i\n if (compactUuidRegex.test(trimmed)) {\n return formatUuid(trimmed)\n }\n\n // Extract from URL - prioritize path over query parameters\n // This prevents extracting view IDs when database IDs are in the path\n // The title slug is optional: Notion also copies links with a bare ID path.\n const pathMatch = trimmed.match(/\\/(?:[^/?#]*-)?([0-9a-f]{32})(?:[/?#]|$)/i)\n if (pathMatch && pathMatch[1]) {\n return formatUuid(pathMatch[1])\n }\n\n // Fallback to query parameters if no path ID found\n const queryMatch = trimmed.match(\n /[?&](?:p|page_id|database_id)=([0-9a-f]{32})/i\n )\n if (queryMatch && queryMatch[1]) {\n return formatUuid(queryMatch[1])\n }\n\n // Last resort: any 32-char hex string in the URL\n const anyMatch = trimmed.match(/([0-9a-f]{32})/i)\n if (anyMatch && anyMatch[1]) {\n return formatUuid(anyMatch[1])\n }\n\n return null\n}\n\n/**\n * Formats a 32-character hex string into a standard UUID format.\n * @param compactId 32-character hex string without hyphens\n * @returns UUID with hyphens in standard format\n */\nfunction formatUuid(compactId: string): string {\n const clean = compactId.toLowerCase()\n return `${clean.slice(0, 8)}-${clean.slice(8, 12)}-${clean.slice(\n 12,\n 16\n )}-${clean.slice(16, 20)}-${clean.slice(20, 32)}`\n}\n\n/**\n * Extracts a database ID from a Notion database URL.\n * Convenience wrapper around `extractNotionId`.\n */\nexport function extractDatabaseId(databaseUrl: string): string | null {\n return extractNotionId(databaseUrl)\n}\n\n/**\n * Extracts a page ID from a Notion page URL.\n * Convenience wrapper around `extractNotionId`.\n */\nexport function extractPageId(pageUrl: string): string | null {\n return extractNotionId(pageUrl)\n}\n\n/**\n * Extracts a block ID from a Notion URL with a block fragment.\n * Looks for #block-<id> or #<id> patterns.\n */\nexport function extractBlockId(urlWithBlock: string): string | null {\n if (!urlWithBlock || typeof urlWithBlock !== \"string\") {\n return null\n }\n\n // Look for block fragment in URL (#block-32chars or just #32chars)\n const blockMatch = urlWithBlock.match(/#(?:block-)?([0-9a-f]{32})/i)\n if (blockMatch && blockMatch[1]) {\n return formatUuid(blockMatch[1])\n }\n\n return null\n}\n"]}
|
package/build/src/index.d.ts
CHANGED
|
@@ -6,13 +6,17 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @packageDocumentation
|
|
8
8
|
*/
|
|
9
|
-
import type { RichTextItemResponseCommon } from "./api-endpoints";
|
|
10
|
-
export type { GetPluginDirectoryParameters, GetPluginDirectoryResponse, GetSkillDirectoryParameters, GetSkillDirectoryResponse, ListSkillsPluginsParameters, ListSkillsPluginsResponse, UploadSkillParameters, UploadSkillResponse, AgentBatchParameters, AgentBatchResponse, ApiColor, AppendBlockChildrenParameters, AppendBlockChildrenResponse, AudioBlockObjectResponse, BlockObjectRequest, BlockObjectResponse, BookmarkBlockObjectResponse, BotUserObjectResponse, BreadcrumbBlockObjectResponse, BulletedListItemBlockObjectResponse, ButtonPropertyItemObjectResponse, CalloutBlockObjectResponse, CancelSessionParameters, CancelSessionResponse, CheckboxPropertyItemObjectResponse, ChildDatabaseBlockObjectResponse, ChildPageBlockObjectResponse, CodeBlockObjectResponse, ColumnBlockObjectResponse, ColumnListBlockObjectResponse, CommentObjectResponse, CompleteFileUploadParameters, CompleteFileUploadResponse, CreateCommentParameters, CreateCommentResponse, CreateDatabaseParameters, CreateDatabaseResponse, CreateDataSourceParameters, CreateDataSourceResponse, CreateViewParameters, CreateViewResponse, CreateViewQueryParameters, CreateViewQueryResponse, DashboardRowResponse, DashboardWidgetResponse, CreatedByPropertyItemObjectResponse, CreatedTimePropertyItemObjectResponse, CreateFileUploadParameters, CreateFileUploadResponse, CreatePageParameters, CreatePageResponse, DatabaseObjectResponse, DataSourceObjectResponse, DataSourceViewObjectResponse, DatePropertyItemObjectResponse, DeleteAgentParameters, DeleteAgentResponse, DeleteBlockParameters, DeleteBlockResponse, DeleteCommentParameters, DeleteCommentResponse, DeletedViewQueryResponse, DeleteViewParameters, DeleteViewResponse, DeleteViewQueryParameters, DeleteViewQueryResponse, DividerBlockObjectResponse, EmailPropertyItemObjectResponse, EmbedBlockObjectResponse, EquationBlockObjectResponse, EquationRichTextItemResponse, FileBlockObjectResponse, FilesPropertyItemObjectResponse, FileUploadObjectResponse, FormulaPropertyItemObjectResponse, GetAsyncTaskParameters, GetAsyncTaskResponse, GetAgentParameters, GetAgentResponse, GetBlockParameters, GetBlockResponse, GetCommentParameters, GetCommentResponse, GetDatabaseParameters, GetDatabaseResponse, GetDataSourceParameters, GetDataSourceResponse, GetFileUploadParameters, GetFileUploadResponse, GetInsightsParameters, GetInsightsResponse, GetPageParameters, GetPagePropertyParameters, GetPagePropertyResponse, GetPageResponse, GetSelfParameters, GetSelfResponse, GetUserParameters, GetUserResponse, GetViewParameters, GetViewResponse, GetViewQueryResultsParameters, GetViewQueryResultsResponse, GroupObjectResponse, Heading1BlockObjectResponse, Heading2BlockObjectResponse, Heading3BlockObjectResponse, ImageBlockObjectResponse, LastEditedByPropertyItemObjectResponse, LastEditedTimePropertyItemObjectResponse, LinkPreviewBlockObjectResponse, LinkToPageBlockObjectResponse, ListBlockChildrenParameters, ListBlockChildrenResponse, ListCommentsParameters, ListCommentsResponse, ListCustomEmojisParameters, ListCustomEmojisResponse, CustomEmojiResponse, ListDatabaseViewsParameters, ListDatabaseViewsResponse, ListFileUploadsParameters, ListFileUploadsResponse, ListUsersParameters, ListUsersResponse, MeetingNotesBlockObjectResponse, MentionRichTextItemResponse, MovePageParameters, MovePageResponse, MultiSelectPropertyItemObjectResponse, NumberedListItemBlockObjectResponse, NumberPropertyItemObjectResponse, OauthIntrospectParameters, OauthIntrospectResponse, OauthRevokeParameters, OauthRevokeResponse, OauthTokenParameters, OauthTokenResponse, PageMarkdownResponse, PageObjectResponse, PageWriteNotificationsSchema, ParagraphBlockObjectResponse, PartialBlockObjectResponse, PartialCommentObjectResponse, PartialDatabaseObjectResponse, PartialDataSourceObjectResponse, PartialDataSourceViewObjectResponse, PartialPageObjectResponse, PartialUserObjectResponse, PdfBlockObjectResponse, PeoplePropertyItemObjectResponse, PersonUserObjectResponse, PhoneNumberPropertyItemObjectResponse, PropertyItemListResponse, PropertyItemObjectResponse, PublicApiAsyncTaskStatusResultJsonValue, QueryDataSourceParameters, QueryDataSourceResponse, QueryAgentsParameters, QueryAgentsResponse, QuerySessionEventsParameters, QuerySessionEventsResponse, QuerySessionsParameters, QuerySessionsResponse, QuoteBlockObjectResponse, RelationPropertyItemObjectResponse, RetrieveSessionParameters, RetrieveSessionResponse, RichTextItemResponse, RichTextItemResponseCommon, RichTextPropertyItemObjectResponse, RollupPropertyItemObjectResponse, SearchParameters, SearchResponse, SelectPropertyItemObjectResponse, SendFileUploadParameters, SendFileUploadResponse, SessionAgentIdFilter, SessionIdFilter, SessionNestedFilter, SessionStatusFilter, SessionTimestampFilter, StatusPropertyItemObjectResponse, SyncedBlockBlockObjectResponse, TableBlockObjectResponse, TableOfContentsBlockObjectResponse, TableRowBlockObjectResponse, TemplateBlockObjectResponse, TextRichTextItemResponse, TitlePropertyItemObjectResponse, ToDoBlockObjectResponse, ToggleBlockObjectResponse, TranscriptionBlockObjectResponse, UniqueIdPropertyItemObjectResponse, UnsupportedBlockObjectResponse, UpdateBlockParameters, UpdateBlockResponse, UpdateAgentCreditLimitParameters, UpdateAgentCreditLimitResponse, UpdateAgentStatusParameters, UpdateAgentStatusResponse, UpdateCommentParameters, UpdateCommentResponse, UpdateDatabaseParameters, UpdateDatabaseResponse, UpdateDataSourceParameters, UpdateDataSourceResponse, UpdatePageParameters, UpdatePageResponse, UpdateSessionParameters, UpdateSessionResponse, UpdateSessionStreamParameters, UpdateSessionStreamResponse, UpdateViewParameters, UpdateViewResponse, UrlPropertyItemObjectResponse, UserObjectResponse, ViewQueryResponse, VerificationPropertyItemObjectResponse, VideoBlockObjectResponse, BaseWebhookPayload, CommentCreatedWebhookPayload, CommentDeletedWebhookPayload, CommentUpdatedWebhookPayload, DataSourceContentUpdatedWebhookPayload, DataSourceCreatedWebhookPayload, DataSourceDeletedWebhookPayload, DataSourceMovedWebhookPayload, DataSourceSchemaUpdatedWebhookPayload, DataSourceUndeletedWebhookPayload, DatabaseContentUpdatedWebhookPayload, DatabaseCreatedWebhookPayload, DatabaseDeletedWebhookPayload, DatabaseMovedWebhookPayload, DatabaseSchemaUpdatedWebhookPayload, DatabaseUndeletedWebhookPayload, FileUploadCompletedWebhookPayload, FileUploadCreatedWebhookPayload, FileUploadExpiredWebhookPayload, FileUploadUploadFailedWebhookPayload, PageContentUpdatedWebhookPayload, PageCreatedWebhookPayload, PageDeletedWebhookPayload, PageLockedWebhookPayload, PageMovedWebhookPayload, PagePropertiesUpdatedWebhookPayload, PageTranscriptionBlockTranscriptDeletedWebhookPayload, PageUndeletedWebhookPayload, PageUnlockedWebhookPayload, ViewCreatedWebhookPayload, ViewDeletedWebhookPayload, ViewUpdatedWebhookPayload, } from "./api-endpoints";
|
|
9
|
+
import type { QueryDataSourceParameters, RichTextItemResponseCommon } from "./api-endpoints";
|
|
10
|
+
export type { GetPluginDirectoryParameters, GetPluginDirectoryResponse, GetSkillDirectoryParameters, GetSkillDirectoryResponse, ListSkillsPluginsParameters, ListSkillsPluginsResponse, UploadSkillParameters, UploadSkillResponse, AgentBatchParameters, AgentBatchResponse, ApiColor, AppendBlockChildrenParameters, AppendBlockChildrenResponse, AudioBlockObjectResponse, BlockObjectRequest, BlockObjectResponse, BookmarkBlockObjectResponse, BotUserObjectResponse, BreadcrumbBlockObjectResponse, BulletedListItemBlockObjectResponse, ButtonPropertyItemObjectResponse, CalloutBlockObjectResponse, CancelSessionParameters, CancelSessionResponse, CheckboxPropertyItemObjectResponse, ChildDatabaseBlockObjectResponse, ChildPageBlockObjectResponse, CodeBlockObjectResponse, ColumnBlockObjectResponse, ColumnListBlockObjectResponse, CommentObjectResponse, CompleteFileUploadParameters, CompleteFileUploadResponse, CreateCommentParameters, CreateCommentResponse, CreateDatabaseParameters, CreateDatabaseResponse, CreateDataSourceParameters, CreateDataSourceResponse, CreateViewParameters, CreateViewResponse, CreateViewQueryParameters, CreateViewQueryResponse, DashboardRowResponse, DashboardWidgetResponse, CreatedByPropertyItemObjectResponse, CreatedTimePropertyItemObjectResponse, CreateFileUploadParameters, CreateFileUploadResponse, CreatePageParameters, CreatePageResponse, DatabaseObjectResponse, DataSourceObjectResponse, DataSourceViewObjectResponse, DatePropertyItemObjectResponse, DateRequest, DateResponse, DeleteAgentParameters, DeleteAgentResponse, DeleteBlockParameters, DeleteBlockResponse, DeleteCommentParameters, DeleteCommentResponse, DeletedViewQueryResponse, DeleteViewParameters, DeleteViewResponse, DeleteViewQueryParameters, DeleteViewQueryResponse, DividerBlockObjectResponse, EmailPropertyItemObjectResponse, EmbedBlockObjectResponse, EquationBlockObjectResponse, EquationRichTextItemResponse, FileBlockObjectResponse, FilesPropertyItemObjectResponse, FileUploadObjectResponse, FormulaPropertyItemObjectResponse, GetAsyncTaskParameters, GetAsyncTaskResponse, GetAgentParameters, GetAgentResponse, GetBlockParameters, GetBlockResponse, GetCommentParameters, GetCommentResponse, GetDatabaseParameters, GetDatabaseResponse, GetDataSourceParameters, GetDataSourceResponse, GetFileUploadParameters, GetFileUploadResponse, GetInsightsParameters, GetInsightsResponse, GetPageParameters, GetPagePropertyParameters, GetPagePropertyResponse, GetPageResponse, GetSelfParameters, GetSelfResponse, GetUserParameters, GetUserResponse, GetViewParameters, GetViewResponse, GetViewQueryResultsParameters, GetViewQueryResultsResponse, GroupObjectResponse, Heading1BlockObjectResponse, Heading2BlockObjectResponse, Heading3BlockObjectResponse, ImageBlockObjectResponse, LastEditedByPropertyItemObjectResponse, LastEditedTimePropertyItemObjectResponse, LinkPreviewBlockObjectResponse, LinkToPageBlockObjectResponse, ListBlockChildrenParameters, ListBlockChildrenResponse, ListCommentsParameters, ListCommentsResponse, ListCustomEmojisParameters, ListCustomEmojisResponse, CustomEmojiResponse, ListDatabaseViewsParameters, ListDatabaseViewsResponse, ListFileUploadsParameters, ListFileUploadsResponse, ListUsersParameters, ListUsersResponse, MeetingNotesBlockObjectResponse, MentionRichTextItemResponse, MovePageParameters, MovePageResponse, MultiSelectPropertyItemObjectResponse, NumberedListItemBlockObjectResponse, NumberPropertyItemObjectResponse, OauthIntrospectParameters, OauthIntrospectResponse, OauthRevokeParameters, OauthRevokeResponse, OauthTokenParameters, OauthTokenResponse, PageIconRequest, PageIconResponse, PageMarkdownResponse, PageObjectResponse, PageWriteNotificationsSchema, ParagraphBlockObjectResponse, PartialBlockObjectResponse, PartialCommentObjectResponse, PartialDatabaseObjectResponse, PartialDataSourceObjectResponse, PartialDataSourceViewObjectResponse, PartialPageObjectResponse, PartialUserObjectResponse, PdfBlockObjectResponse, PeoplePropertyItemObjectResponse, PersonUserObjectResponse, PhoneNumberPropertyItemObjectResponse, PropertyConfigurationRequest, PropertyFilter, PropertyItemListResponse, PropertyItemObjectResponse, PublicApiAsyncTaskStatusResultJsonValue, QueryDataSourceParameters, QueryDataSourceResponse, QueryAgentsParameters, QueryAgentsResponse, QuerySessionEventsParameters, QuerySessionEventsResponse, QuerySessionsParameters, QuerySessionsResponse, QuoteBlockObjectResponse, RelationPropertyItemObjectResponse, RetrieveSessionParameters, RetrieveSessionResponse, RichTextItemRequest, RichTextItemResponse, RichTextItemResponseCommon, RichTextPropertyItemObjectResponse, RollupPropertyItemObjectResponse, SearchParameters, SearchResponse, SelectPropertyItemObjectResponse, SendFileUploadParameters, SendFileUploadResponse, SessionAgentIdFilter, SessionIdFilter, SessionNestedFilter, SessionStatusFilter, SessionTimestampFilter, StatusPropertyItemObjectResponse, SyncedBlockBlockObjectResponse, TableBlockObjectResponse, TableOfContentsBlockObjectResponse, TableRowBlockObjectResponse, TemplateBlockObjectResponse, TextRichTextItemResponse, TimestampFilter, TitlePropertyItemObjectResponse, ToDoBlockObjectResponse, ToggleBlockObjectResponse, TranscriptionBlockObjectResponse, UniqueIdPropertyItemObjectResponse, UnsupportedBlockObjectResponse, UpdateBlockParameters, UpdateBlockResponse, UpdateAgentCreditLimitParameters, UpdateAgentCreditLimitResponse, UpdateAgentStatusParameters, UpdateAgentStatusResponse, UpdateCommentParameters, UpdateCommentResponse, UpdateDatabaseParameters, UpdateDatabaseResponse, UpdateDataSourceParameters, UpdateDataSourceResponse, UpdatePageParameters, UpdatePageResponse, UpdateSessionParameters, UpdateSessionResponse, UpdateSessionStreamParameters, UpdateSessionStreamResponse, UpdateViewParameters, UpdateViewResponse, UrlPropertyItemObjectResponse, UserObjectResponse, ViewQueryResponse, VerificationPropertyItemObjectResponse, VideoBlockObjectResponse, BaseWebhookPayload, CommentCreatedWebhookPayload, CommentDeletedWebhookPayload, CommentUpdatedWebhookPayload, DataSourceContentUpdatedWebhookPayload, DataSourceCreatedWebhookPayload, DataSourceDeletedWebhookPayload, DataSourceMovedWebhookPayload, DataSourceSchemaUpdatedWebhookPayload, DataSourceUndeletedWebhookPayload, DatabaseContentUpdatedWebhookPayload, DatabaseCreatedWebhookPayload, DatabaseDeletedWebhookPayload, DatabaseMovedWebhookPayload, DatabaseSchemaUpdatedWebhookPayload, DatabaseUndeletedWebhookPayload, FileUploadCompletedWebhookPayload, FileUploadCreatedWebhookPayload, FileUploadExpiredWebhookPayload, FileUploadUploadFailedWebhookPayload, PageContentUpdatedWebhookPayload, PageCreatedWebhookPayload, PageDeletedWebhookPayload, PageLockedWebhookPayload, PageMovedWebhookPayload, PagePropertiesUpdatedWebhookPayload, PageTranscriptionBlockTranscriptDeletedWebhookPayload, PageUndeletedWebhookPayload, PageUnlockedWebhookPayload, ViewCreatedWebhookPayload, ViewDeletedWebhookPayload, ViewUpdatedWebhookPayload, } from "./api-endpoints";
|
|
11
11
|
export type AnnotationResponse = RichTextItemResponseCommon["annotations"];
|
|
12
|
+
/** A data source query filter, including compound `and` and `or` groups. */
|
|
13
|
+
export type QueryDataSourceFilter = NonNullable<QueryDataSourceParameters["filter"]>;
|
|
14
|
+
/** One sort in a data source query's `sorts` array. */
|
|
15
|
+
export type QueryDataSourceSort = NonNullable<QueryDataSourceParameters["sorts"]>[number];
|
|
12
16
|
export { default as Client } from "./Client";
|
|
13
|
-
export { LogLevel, Logger } from "./logging";
|
|
14
|
-
export { NotionErrorCode, APIErrorCode, ClientErrorCode, NotionClientError, APIResponseError, UnknownHTTPResponseError, RequestTimeoutError, InvalidPathParameterError, BrowserTokenNotAllowedError, isNotionClientError, isHTTPResponseError, } from "./errors";
|
|
15
|
-
export type { RetryOptions } from "./Client";
|
|
17
|
+
export { LogLevel, type Logger } from "./logging";
|
|
18
|
+
export { type NotionErrorCode, APIErrorCode, ClientErrorCode, type NotionClientError, APIResponseError, UnknownHTTPResponseError, RequestTimeoutError, InvalidPathParameterError, BrowserTokenNotAllowedError, isNotionClientError, isHTTPResponseError, } from "./errors";
|
|
19
|
+
export type { ClientOptions, RetryOptions } from "./Client";
|
|
16
20
|
export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, DEFAULT_MAX_RETRIES, DEFAULT_INITIAL_RETRY_DELAY_MS, DEFAULT_MAX_RETRY_DELAY_MS, MIN_VIEW_COLUMN_WIDTH, } from "./constants";
|
|
17
21
|
export { collectPaginatedAPI, iteratePaginatedAPI, collectDataSourceTemplates, iterateDataSourceTemplates, iterateAllDataSourceRows, collectAllDataSourceRows, isFullBlock, isFullDataSource, isFullDatabase, isFullPage, isFullUser, isFullComment, isFullView, isFullPageOrDataSource, extractNotionId, extractDatabaseId, extractPageId, extractBlockId, } from "./helpers";
|
|
18
22
|
export type { FullDataSourceQueryArgs, FullDataSourceQueryFilter, } from "./helpers";
|
package/build/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/src/index.js
CHANGED
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
10
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
14
|
exports.meetingNotesFilterableProperties = exports.signWebhookPayload = exports.verifyWebhookSignature = exports.extractBlockId = exports.extractPageId = exports.extractDatabaseId = exports.extractNotionId = exports.isFullPageOrDataSource = exports.isFullView = exports.isFullComment = exports.isFullUser = exports.isFullPage = exports.isFullDatabase = exports.isFullDataSource = exports.isFullBlock = exports.collectAllDataSourceRows = exports.iterateAllDataSourceRows = exports.iterateDataSourceTemplates = exports.collectDataSourceTemplates = exports.iteratePaginatedAPI = exports.collectPaginatedAPI = exports.MIN_VIEW_COLUMN_WIDTH = exports.DEFAULT_MAX_RETRY_DELAY_MS = exports.DEFAULT_INITIAL_RETRY_DELAY_MS = exports.DEFAULT_MAX_RETRIES = exports.DEFAULT_TIMEOUT_MS = exports.DEFAULT_BASE_URL = exports.isHTTPResponseError = exports.isNotionClientError = exports.BrowserTokenNotAllowedError = exports.InvalidPathParameterError = exports.RequestTimeoutError = exports.UnknownHTTPResponseError = exports.APIResponseError = exports.ClientErrorCode = exports.APIErrorCode = exports.LogLevel = exports.Client = void 0;
|
|
12
15
|
var Client_1 = require("./Client");
|
|
13
|
-
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return Client_1.default; } });
|
|
16
|
+
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return __importDefault(Client_1).default; } });
|
|
14
17
|
var logging_1 = require("./logging");
|
|
15
18
|
Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return logging_1.LogLevel; } });
|
|
16
19
|
var errors_1 = require("./errors");
|