@upstart.gg/sdk 0.0.138 → 0.0.139
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/dist/shared/ai/schemas.d.ts +20 -15
- package/dist/shared/ai/schemas.d.ts.map +1 -1
- package/dist/shared/ai/schemas.js +31 -57
- package/dist/shared/ai/schemas.js.map +1 -1
- package/dist/shared/ai/types.d.ts +193 -190
- package/dist/shared/ai/types.d.ts.map +1 -1
- package/dist/shared/ai/types.js +1 -3
- package/dist/shared/analytics/init.d.ts +4 -1
- package/dist/shared/analytics/init.d.ts.map +1 -1
- package/dist/shared/analytics/init.js +14 -20
- package/dist/shared/analytics/init.js.map +1 -1
- package/dist/shared/analytics/track.d.ts +6 -2
- package/dist/shared/analytics/track.d.ts.map +1 -1
- package/dist/shared/analytics/track.js +14 -24
- package/dist/shared/analytics/track.js.map +1 -1
- package/dist/shared/analytics/types.d.ts +10 -8
- package/dist/shared/analytics/types.d.ts.map +1 -1
- package/dist/shared/analytics/types.js +1 -3
- package/dist/shared/attributes.d.ts +488 -483
- package/dist/shared/attributes.d.ts.map +1 -1
- package/dist/shared/attributes.js +369 -45
- package/dist/shared/attributes.js.map +1 -1
- package/dist/shared/brick-manifest.d.ts +126 -108
- package/dist/shared/brick-manifest.d.ts.map +1 -1
- package/dist/shared/brick-manifest.js +36 -12
- package/dist/shared/brick-manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/_types.d.ts +11 -7
- package/dist/shared/bricks/manifests/_types.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/_types.js +1 -3
- package/dist/shared/bricks/manifests/accordion.manifest.d.ts +83 -76
- package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/accordion.manifest.js +389 -24
- package/dist/shared/bricks/manifests/accordion.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/all-manifests.d.ts +15 -10
- package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/all-manifests.js +128 -61
- package/dist/shared/bricks/manifests/all-manifests.js.map +1 -1
- package/dist/shared/bricks/manifests/all-props.d.ts +1510 -1505
- package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/all-props.js +167 -241
- package/dist/shared/bricks/manifests/all-props.js.map +1 -1
- package/dist/shared/bricks/manifests/box.manifest.d.ts +87 -80
- package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/box.manifest.js +548 -27
- package/dist/shared/bricks/manifests/box.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/button.manifest.d.ts +75 -68
- package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/button.manifest.js +308 -23
- package/dist/shared/bricks/manifests/button.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/card.manifest.d.ts +96 -89
- package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/card.manifest.js +392 -28
- package/dist/shared/bricks/manifests/card.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts +86 -79
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/carousel.manifest.js +775 -26
- package/dist/shared/bricks/manifests/carousel.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/footer.manifest.d.ts +117 -110
- package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/footer.manifest.js +864 -25
- package/dist/shared/bricks/manifests/footer.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/form.manifest.d.ts +94 -87
- package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/form.manifest.js +324 -25
- package/dist/shared/bricks/manifests/form.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/hero.manifest.d.ts +80 -73
- package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/hero.manifest.js +202 -24
- package/dist/shared/bricks/manifests/hero.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/html.manifest.d.ts +68 -61
- package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/html.manifest.js +95 -18
- package/dist/shared/bricks/manifests/html.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/icon.manifest.d.ts +74 -67
- package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/icon.manifest.js +239 -24
- package/dist/shared/bricks/manifests/icon.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/image.manifest.d.ts +97 -90
- package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/image.manifest.js +456 -27
- package/dist/shared/bricks/manifests/image.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +93 -86
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/images-gallery.manifest.js +598 -25
- package/dist/shared/bricks/manifests/images-gallery.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/map.manifest.d.ts +78 -71
- package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/map.manifest.js +138 -23
- package/dist/shared/bricks/manifests/map.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts +117 -110
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/navbar.manifest.js +370 -28
- package/dist/shared/bricks/manifests/navbar.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +94 -87
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/sidebar.manifest.js +69 -24
- package/dist/shared/bricks/manifests/sidebar.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts +84 -77
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/social-links.manifest.js +465 -24
- package/dist/shared/bricks/manifests/social-links.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts +65 -58
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/spacer.manifest.js +39 -18
- package/dist/shared/bricks/manifests/spacer.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/table.manifest.d.ts +93 -86
- package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/table.manifest.js +771 -25
- package/dist/shared/bricks/manifests/table.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts +91 -84
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/tabs.manifest.js +119 -25
- package/dist/shared/bricks/manifests/tabs.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +97 -90
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/testimonials.manifest.js +223 -28
- package/dist/shared/bricks/manifests/testimonials.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/text.manifest.d.ts +76 -69
- package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/text.manifest.js +199 -23
- package/dist/shared/bricks/manifests/text.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts +102 -95
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/timeline.manifest.js +401 -25
- package/dist/shared/bricks/manifests/timeline.manifest.js.map +1 -1
- package/dist/shared/bricks/manifests/video.manifest.d.ts +74 -67
- package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/video.manifest.js +97 -21
- package/dist/shared/bricks/manifests/video.manifest.js.map +1 -1
- package/dist/shared/bricks/props/align.d.ts +12 -7
- package/dist/shared/bricks/props/align.d.ts.map +1 -1
- package/dist/shared/bricks/props/align.js +74 -13
- package/dist/shared/bricks/props/align.js.map +1 -1
- package/dist/shared/bricks/props/background.d.ts +21 -17
- package/dist/shared/bricks/props/background.d.ts.map +1 -1
- package/dist/shared/bricks/props/background.js +63 -11
- package/dist/shared/bricks/props/background.js.map +1 -1
- package/dist/shared/bricks/props/boolean.d.ts +6 -2
- package/dist/shared/bricks/props/boolean.d.ts.map +1 -1
- package/dist/shared/bricks/props/boolean.js +12 -8
- package/dist/shared/bricks/props/boolean.js.map +1 -1
- package/dist/shared/bricks/props/border.d.ts +12 -7
- package/dist/shared/bricks/props/border.d.ts.map +1 -1
- package/dist/shared/bricks/props/border.js +85 -12
- package/dist/shared/bricks/props/border.js.map +1 -1
- package/dist/shared/bricks/props/color-preset.d.ts +331 -327
- package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
- package/dist/shared/bricks/props/color-preset.js +378 -10
- package/dist/shared/bricks/props/color-preset.js.map +1 -1
- package/dist/shared/bricks/props/color.d.ts +10 -5
- package/dist/shared/bricks/props/color.d.ts.map +1 -1
- package/dist/shared/bricks/props/color.js +27 -10
- package/dist/shared/bricks/props/color.js.map +1 -1
- package/dist/shared/bricks/props/common.d.ts +32 -28
- package/dist/shared/bricks/props/common.d.ts.map +1 -1
- package/dist/shared/bricks/props/common.js +42 -13
- package/dist/shared/bricks/props/common.js.map +1 -1
- package/dist/shared/bricks/props/css-length.d.ts +10 -5
- package/dist/shared/bricks/props/css-length.d.ts.map +1 -1
- package/dist/shared/bricks/props/css-length.js +39 -12
- package/dist/shared/bricks/props/css-length.js.map +1 -1
- package/dist/shared/bricks/props/datarecord.d.ts +8 -3
- package/dist/shared/bricks/props/datarecord.d.ts.map +1 -1
- package/dist/shared/bricks/props/datarecord.js +12 -8
- package/dist/shared/bricks/props/datarecord.js.map +1 -1
- package/dist/shared/bricks/props/datasource.d.ts +18 -13
- package/dist/shared/bricks/props/datasource.d.ts.map +1 -1
- package/dist/shared/bricks/props/datasource.js +61 -84
- package/dist/shared/bricks/props/datasource.js.map +1 -1
- package/dist/shared/bricks/props/date.d.ts +8 -3
- package/dist/shared/bricks/props/date.d.ts.map +1 -1
- package/dist/shared/bricks/props/date.js +19 -23
- package/dist/shared/bricks/props/date.js.map +1 -1
- package/dist/shared/bricks/props/direction.d.ts +8 -3
- package/dist/shared/bricks/props/direction.d.ts.map +1 -1
- package/dist/shared/bricks/props/direction.js +16 -9
- package/dist/shared/bricks/props/direction.js.map +1 -1
- package/dist/shared/bricks/props/dynamic.d.ts +39 -34
- package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
- package/dist/shared/bricks/props/dynamic.js +92 -13
- package/dist/shared/bricks/props/dynamic.js.map +1 -1
- package/dist/shared/bricks/props/effects.d.ts +18 -11
- package/dist/shared/bricks/props/effects.d.ts.map +1 -1
- package/dist/shared/bricks/props/effects.js +81 -13
- package/dist/shared/bricks/props/effects.js.map +1 -1
- package/dist/shared/bricks/props/file.d.ts +6 -1
- package/dist/shared/bricks/props/file.d.ts.map +1 -1
- package/dist/shared/bricks/props/file.js +11 -14
- package/dist/shared/bricks/props/file.js.map +1 -1
- package/dist/shared/bricks/props/geolocation.d.ts +15 -10
- package/dist/shared/bricks/props/geolocation.d.ts.map +1 -1
- package/dist/shared/bricks/props/geolocation.js +28 -40
- package/dist/shared/bricks/props/geolocation.js.map +1 -1
- package/dist/shared/bricks/props/grow.d.ts +7 -2
- package/dist/shared/bricks/props/grow.d.ts.map +1 -1
- package/dist/shared/bricks/props/grow.js +14 -8
- package/dist/shared/bricks/props/grow.js.map +1 -1
- package/dist/shared/bricks/props/helpers.d.ts +32 -24
- package/dist/shared/bricks/props/helpers.d.ts.map +1 -1
- package/dist/shared/bricks/props/helpers.js +50 -19
- package/dist/shared/bricks/props/helpers.js.map +1 -1
- package/dist/shared/bricks/props/image.d.ts +15 -12
- package/dist/shared/bricks/props/image.d.ts.map +1 -1
- package/dist/shared/bricks/props/image.js +109 -9
- package/dist/shared/bricks/props/image.js.map +1 -1
- package/dist/shared/bricks/props/number.d.ts +8 -4
- package/dist/shared/bricks/props/number.d.ts.map +1 -1
- package/dist/shared/bricks/props/number.js +11 -8
- package/dist/shared/bricks/props/number.js.map +1 -1
- package/dist/shared/bricks/props/position.d.ts +8 -3
- package/dist/shared/bricks/props/position.d.ts.map +1 -1
- package/dist/shared/bricks/props/position.js +12 -8
- package/dist/shared/bricks/props/position.js.map +1 -1
- package/dist/shared/bricks/props/string.d.ts +13 -9
- package/dist/shared/bricks/props/string.d.ts.map +1 -1
- package/dist/shared/bricks/props/string.js +34 -12
- package/dist/shared/bricks/props/string.js.map +1 -1
- package/dist/shared/bricks/props/tags.d.ts +8 -3
- package/dist/shared/bricks/props/tags.d.ts.map +1 -1
- package/dist/shared/bricks/props/tags.js +16 -8
- package/dist/shared/bricks/props/tags.js.map +1 -1
- package/dist/shared/bricks/props/text.d.ts +22 -11
- package/dist/shared/bricks/props/text.d.ts.map +1 -1
- package/dist/shared/bricks/props/text.js +79 -13
- package/dist/shared/bricks/props/text.js.map +1 -1
- package/dist/shared/bricks/props/types.d.ts +52 -49
- package/dist/shared/bricks/props/types.d.ts.map +1 -1
- package/dist/shared/bricks/props/types.js +1 -3
- package/dist/shared/bricks.d.ts +183 -179
- package/dist/shared/bricks.d.ts.map +1 -1
- package/dist/shared/bricks.js +271 -78
- package/dist/shared/bricks.js.map +1 -1
- package/dist/shared/context.d.ts +405 -398
- package/dist/shared/context.d.ts.map +1 -1
- package/dist/shared/context.js +22 -93
- package/dist/shared/context.js.map +1 -1
- package/dist/shared/datarecords/external/airtable/handler.d.ts +40 -20
- package/dist/shared/datarecords/external/airtable/handler.d.ts.map +1 -1
- package/dist/shared/datarecords/external/airtable/handler.js +242 -366
- package/dist/shared/datarecords/external/airtable/handler.js.map +1 -1
- package/dist/shared/datarecords/external/airtable/oauth/config.d.ts +14 -9
- package/dist/shared/datarecords/external/airtable/oauth/config.d.ts.map +1 -1
- package/dist/shared/datarecords/external/airtable/oauth/config.js +12 -15
- package/dist/shared/datarecords/external/airtable/oauth/config.js.map +1 -1
- package/dist/shared/datarecords/external/airtable/types.d.ts +39 -35
- package/dist/shared/datarecords/external/airtable/types.d.ts.map +1 -1
- package/dist/shared/datarecords/external/airtable/types.js +44 -13
- package/dist/shared/datarecords/external/airtable/types.js.map +1 -1
- package/dist/shared/datarecords/external/generic-webhook/handler.d.ts +6 -2
- package/dist/shared/datarecords/external/generic-webhook/handler.d.ts.map +1 -1
- package/dist/shared/datarecords/external/generic-webhook/handler.js +9 -14
- package/dist/shared/datarecords/external/generic-webhook/handler.js.map +1 -1
- package/dist/shared/datarecords/external/generic-webhook/options.d.ts +10 -5
- package/dist/shared/datarecords/external/generic-webhook/options.d.ts.map +1 -1
- package/dist/shared/datarecords/external/generic-webhook/options.js +14 -16
- package/dist/shared/datarecords/external/generic-webhook/options.js.map +1 -1
- package/dist/shared/datarecords/external/google/oauth/config.d.ts +28 -24
- package/dist/shared/datarecords/external/google/oauth/config.d.ts.map +1 -1
- package/dist/shared/datarecords/external/google/oauth/config.js +25 -34
- package/dist/shared/datarecords/external/google/oauth/config.js.map +1 -1
- package/dist/shared/datarecords/external/google/sheets/client.d.ts +11 -9
- package/dist/shared/datarecords/external/google/sheets/client.d.ts.map +1 -1
- package/dist/shared/datarecords/external/google/sheets/client.js +75 -8
- package/dist/shared/datarecords/external/google/sheets/client.js.map +1 -1
- package/dist/shared/datarecords/external/google/sheets/handler.d.ts +36 -18
- package/dist/shared/datarecords/external/google/sheets/handler.d.ts.map +1 -1
- package/dist/shared/datarecords/external/google/sheets/handler.js +103 -176
- package/dist/shared/datarecords/external/google/sheets/handler.js.map +1 -1
- package/dist/shared/datarecords/external/google/sheets/types.d.ts +12 -7
- package/dist/shared/datarecords/external/google/sheets/types.d.ts.map +1 -1
- package/dist/shared/datarecords/external/google/sheets/types.js +11 -8
- package/dist/shared/datarecords/external/google/sheets/types.js.map +1 -1
- package/dist/shared/datarecords/external/notion/handler.d.ts +48 -26
- package/dist/shared/datarecords/external/notion/handler.d.ts.map +1 -1
- package/dist/shared/datarecords/external/notion/handler.js +233 -386
- package/dist/shared/datarecords/external/notion/handler.js.map +1 -1
- package/dist/shared/datarecords/external/notion/oauth/config.d.ts +10 -5
- package/dist/shared/datarecords/external/notion/oauth/config.d.ts.map +1 -1
- package/dist/shared/datarecords/external/notion/oauth/config.js +8 -11
- package/dist/shared/datarecords/external/notion/oauth/config.js.map +1 -1
- package/dist/shared/datarecords/external/notion/types.d.ts +20 -15
- package/dist/shared/datarecords/external/notion/types.d.ts.map +1 -1
- package/dist/shared/datarecords/external/notion/types.js +14 -8
- package/dist/shared/datarecords/external/notion/types.js.map +1 -1
- package/dist/shared/datarecords/types.d.ts +24 -19
- package/dist/shared/datarecords/types.d.ts.map +1 -1
- package/dist/shared/datarecords/types.js +144 -16
- package/dist/shared/datarecords/types.js.map +1 -1
- package/dist/shared/datarecords.d.ts +6 -2
- package/dist/shared/datarecords.d.ts.map +1 -1
- package/dist/shared/datarecords.js +5 -9
- package/dist/shared/datarecords.js.map +1 -1
- package/dist/shared/datasources/external/facebook/posts/fetcher.d.ts +8 -5
- package/dist/shared/datasources/external/facebook/posts/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/external/facebook/posts/fetcher.js +38 -48
- package/dist/shared/datasources/external/facebook/posts/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/facebook/posts/schema.d.ts +30 -25
- package/dist/shared/datasources/external/facebook/posts/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/facebook/posts/schema.js +29 -36
- package/dist/shared/datasources/external/facebook/posts/schema.js.map +1 -1
- package/dist/shared/datasources/external/http-json/fetcher.d.ts +7 -3
- package/dist/shared/datasources/external/http-json/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/external/http-json/fetcher.js +16 -28
- package/dist/shared/datasources/external/http-json/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/http-json/options.d.ts +10 -5
- package/dist/shared/datasources/external/http-json/options.d.ts.map +1 -1
- package/dist/shared/datasources/external/http-json/options.js +8 -11
- package/dist/shared/datasources/external/http-json/options.js.map +1 -1
- package/dist/shared/datasources/external/http-json/schema.d.ts +9 -4
- package/dist/shared/datasources/external/http-json/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/http-json/schema.js +6 -10
- package/dist/shared/datasources/external/http-json/schema.js.map +1 -1
- package/dist/shared/datasources/external/instagram/feed/fetcher.d.ts +8 -5
- package/dist/shared/datasources/external/instagram/feed/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/external/instagram/feed/fetcher.js +26 -28
- package/dist/shared/datasources/external/instagram/feed/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/instagram/feed/schema.d.ts +22 -17
- package/dist/shared/datasources/external/instagram/feed/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/instagram/feed/schema.js +26 -29
- package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/account/fetcher.d.ts +7 -4
- package/dist/shared/datasources/external/mastodon/account/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/external/mastodon/account/fetcher.js +10 -8
- package/dist/shared/datasources/external/mastodon/account/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/account/schema.d.ts +43 -38
- package/dist/shared/datasources/external/mastodon/account/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/mastodon/account/schema.js +42 -8
- package/dist/shared/datasources/external/mastodon/account/schema.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/options.d.ts +9 -4
- package/dist/shared/datasources/external/mastodon/options.d.ts.map +1 -1
- package/dist/shared/datasources/external/mastodon/options.js +5 -10
- package/dist/shared/datasources/external/mastodon/options.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/fetcher.d.ts +7 -4
- package/dist/shared/datasources/external/mastodon/status/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/fetcher.js +20 -31
- package/dist/shared/datasources/external/mastodon/status/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/sample.array.d.ts +50 -47
- package/dist/shared/datasources/external/mastodon/status/sample.array.d.ts.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/sample.array.js +54 -62
- package/dist/shared/datasources/external/mastodon/status/sample.array.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/sample.single.d.ts +50 -47
- package/dist/shared/datasources/external/mastodon/status/sample.single.d.ts.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/sample.single.js +54 -60
- package/dist/shared/datasources/external/mastodon/status/sample.single.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/schema.d.ts +252 -247
- package/dist/shared/datasources/external/mastodon/status/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/schema.js +108 -108
- package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
- package/dist/shared/datasources/external/meta/oauth/config.d.ts +29 -25
- package/dist/shared/datasources/external/meta/oauth/config.d.ts.map +1 -1
- package/dist/shared/datasources/external/meta/oauth/config.js +15 -20
- package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
- package/dist/shared/datasources/external/meta/options.d.ts +9 -4
- package/dist/shared/datasources/external/meta/options.d.ts.map +1 -1
- package/dist/shared/datasources/external/meta/options.js +5 -10
- package/dist/shared/datasources/external/meta/options.js.map +1 -1
- package/dist/shared/datasources/external/rss/fetcher.d.ts +7 -4
- package/dist/shared/datasources/external/rss/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/external/rss/fetcher.js +14 -25
- package/dist/shared/datasources/external/rss/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/rss/options.d.ts +9 -4
- package/dist/shared/datasources/external/rss/options.d.ts.map +1 -1
- package/dist/shared/datasources/external/rss/options.js +5 -10
- package/dist/shared/datasources/external/rss/options.js.map +1 -1
- package/dist/shared/datasources/external/rss/sample.js +25 -0
- package/dist/shared/datasources/external/rss/sample.js.map +1 -0
- package/dist/shared/datasources/external/rss/schema.d.ts +13 -8
- package/dist/shared/datasources/external/rss/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/rss/schema.js +30 -8
- package/dist/shared/datasources/external/rss/schema.js.map +1 -1
- package/dist/shared/datasources/external/threads/media/fetcher.d.ts +9 -5
- package/dist/shared/datasources/external/threads/media/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/external/threads/media/fetcher.js +37 -46
- package/dist/shared/datasources/external/threads/media/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/threads/media/schema.d.ts +29 -24
- package/dist/shared/datasources/external/threads/media/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/threads/media/schema.js +32 -36
- package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
- package/dist/shared/datasources/external/tiktok/oauth/config.d.ts +31 -27
- package/dist/shared/datasources/external/tiktok/oauth/config.d.ts.map +1 -1
- package/dist/shared/datasources/external/tiktok/oauth/config.js +15 -18
- package/dist/shared/datasources/external/tiktok/oauth/config.js.map +1 -1
- package/dist/shared/datasources/external/tiktok/video/fetcher.d.ts +8 -5
- package/dist/shared/datasources/external/tiktok/video/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/external/tiktok/video/fetcher.js +31 -33
- package/dist/shared/datasources/external/tiktok/video/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/tiktok/video/options.d.ts +10 -5
- package/dist/shared/datasources/external/tiktok/video/options.d.ts.map +1 -1
- package/dist/shared/datasources/external/tiktok/video/options.js +8 -11
- package/dist/shared/datasources/external/tiktok/video/options.js.map +1 -1
- package/dist/shared/datasources/external/tiktok/video/schema.d.ts +24 -19
- package/dist/shared/datasources/external/tiktok/video/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/tiktok/video/schema.js +23 -30
- package/dist/shared/datasources/external/tiktok/video/schema.js.map +1 -1
- package/dist/shared/datasources/external/youtube/list/fetcher.d.ts +8 -5
- package/dist/shared/datasources/external/youtube/list/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/external/youtube/list/fetcher.js +20 -31
- package/dist/shared/datasources/external/youtube/list/fetcher.js.map +1 -1
- package/dist/shared/datasources/external/youtube/list/options.d.ts +13 -8
- package/dist/shared/datasources/external/youtube/list/options.d.ts.map +1 -1
- package/dist/shared/datasources/external/youtube/list/options.js +11 -14
- package/dist/shared/datasources/external/youtube/list/options.js.map +1 -1
- package/dist/shared/datasources/external/youtube/list/sample.js +33 -0
- package/dist/shared/datasources/external/youtube/list/sample.js.map +1 -0
- package/dist/shared/datasources/external/youtube/list/schema.d.ts +33 -28
- package/dist/shared/datasources/external/youtube/list/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/youtube/list/schema.js +36 -8
- package/dist/shared/datasources/external/youtube/list/schema.js.map +1 -1
- package/dist/shared/datasources/external/youtube/oauth/config.d.ts +22 -18
- package/dist/shared/datasources/external/youtube/oauth/config.d.ts.map +1 -1
- package/dist/shared/datasources/external/youtube/oauth/config.js +15 -18
- package/dist/shared/datasources/external/youtube/oauth/config.js.map +1 -1
- package/dist/shared/datasources/fetcher.d.ts +10 -6
- package/dist/shared/datasources/fetcher.d.ts.map +1 -1
- package/dist/shared/datasources/fetcher.js +1 -3
- package/dist/shared/datasources/internal/blog/schema.d.ts +20 -15
- package/dist/shared/datasources/internal/blog/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/blog/schema.js +59 -75
- package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
- package/dist/shared/datasources/internal/changelog/schema.d.ts +15 -10
- package/dist/shared/datasources/internal/changelog/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/changelog/schema.js +36 -51
- package/dist/shared/datasources/internal/changelog/schema.js.map +1 -1
- package/dist/shared/datasources/internal/contact-info/schema.d.ts +21 -16
- package/dist/shared/datasources/internal/contact-info/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/contact-info/schema.js +21 -25
- package/dist/shared/datasources/internal/contact-info/schema.js.map +1 -1
- package/dist/shared/datasources/internal/cv/schema.d.ts +71 -66
- package/dist/shared/datasources/internal/cv/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/cv/schema.js +155 -222
- package/dist/shared/datasources/internal/cv/schema.js.map +1 -1
- package/dist/shared/datasources/internal/faq/schema.d.ts +13 -8
- package/dist/shared/datasources/internal/faq/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/faq/schema.js +20 -30
- package/dist/shared/datasources/internal/faq/schema.js.map +1 -1
- package/dist/shared/datasources/internal/job-board/schema.d.ts +86 -81
- package/dist/shared/datasources/internal/job-board/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/job-board/schema.js +194 -224
- package/dist/shared/datasources/internal/job-board/schema.js.map +1 -1
- package/dist/shared/datasources/internal/links/schema.d.ts +12 -7
- package/dist/shared/datasources/internal/links/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/links/schema.js +20 -8
- package/dist/shared/datasources/internal/links/schema.js.map +1 -1
- package/dist/shared/datasources/internal/recipes/schema.d.ts +19 -14
- package/dist/shared/datasources/internal/recipes/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/recipes/schema.js +23 -45
- package/dist/shared/datasources/internal/recipes/schema.js.map +1 -1
- package/dist/shared/datasources/internal/restaurant/schema.d.ts +82 -77
- package/dist/shared/datasources/internal/restaurant/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/restaurant/schema.js +154 -226
- package/dist/shared/datasources/internal/restaurant/schema.js.map +1 -1
- package/dist/shared/datasources/samples.d.ts +7 -3
- package/dist/shared/datasources/samples.d.ts.map +1 -1
- package/dist/shared/datasources/samples.js +9 -69
- package/dist/shared/datasources/samples.js.map +1 -1
- package/dist/shared/datasources/schemas.d.ts +43 -38
- package/dist/shared/datasources/schemas.d.ts.map +1 -1
- package/dist/shared/datasources/schemas.js +10 -34
- package/dist/shared/datasources/schemas.js.map +1 -1
- package/dist/shared/datasources/types.d.ts +142 -138
- package/dist/shared/datasources/types.d.ts.map +1 -1
- package/dist/shared/datasources/types.js +384 -20
- package/dist/shared/datasources/types.js.map +1 -1
- package/dist/shared/datasources/utils.d.ts +8 -4
- package/dist/shared/datasources/utils.d.ts.map +1 -1
- package/dist/shared/datasources/utils.js +15 -12
- package/dist/shared/datasources/utils.js.map +1 -1
- package/dist/shared/datasources.d.ts +22 -9
- package/dist/shared/datasources.d.ts.map +1 -1
- package/dist/shared/datasources.js +65 -44
- package/dist/shared/datasources.js.map +1 -1
- package/dist/shared/env.d.ts +25 -21
- package/dist/shared/env.d.ts.map +1 -1
- package/dist/shared/env.js +1 -3
- package/dist/shared/errors.d.ts +2 -2
- package/dist/shared/errors.js +2 -9
- package/dist/shared/images.d.ts +21 -16
- package/dist/shared/images.d.ts.map +1 -1
- package/dist/shared/images.js +24 -11
- package/dist/shared/images.js.map +1 -1
- package/dist/shared/index.d.ts +4 -2
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +4 -10
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/layout-constants.d.ts +8 -5
- package/dist/shared/layout-constants.d.ts.map +1 -1
- package/dist/shared/layout-constants.js +15 -15
- package/dist/shared/layout-constants.js.map +1 -1
- package/dist/shared/manifest.d.ts +17 -12
- package/dist/shared/manifest.d.ts.map +1 -1
- package/dist/shared/manifest.js +26 -52
- package/dist/shared/manifest.js.map +1 -1
- package/dist/shared/oauth.d.ts +14 -9
- package/dist/shared/oauth.d.ts.map +1 -1
- package/dist/shared/oauth.js +14 -9
- package/dist/shared/oauth.js.map +1 -1
- package/dist/shared/page.d.ts +250 -243
- package/dist/shared/page.d.ts.map +1 -1
- package/dist/shared/page.js +29 -62
- package/dist/shared/page.js.map +1 -1
- package/dist/shared/prompt.d.ts +8 -3
- package/dist/shared/prompt.d.ts.map +1 -1
- package/dist/shared/prompt.js +10 -8
- package/dist/shared/prompt.js.map +1 -1
- package/dist/shared/responsive.d.ts +8 -3
- package/dist/shared/responsive.d.ts.map +1 -1
- package/dist/shared/responsive.js +5 -10
- package/dist/shared/responsive.js.map +1 -1
- package/dist/shared/site.d.ts +629 -622
- package/dist/shared/site.d.ts.map +1 -1
- package/dist/shared/site.js +56 -70
- package/dist/shared/site.js.map +1 -1
- package/dist/shared/sitemap.d.ts +21 -14
- package/dist/shared/sitemap.d.ts.map +1 -1
- package/dist/shared/sitemap.js +29 -63
- package/dist/shared/sitemap.js.map +1 -1
- package/dist/shared/social-icons.d.ts +6 -3
- package/dist/shared/social-icons.d.ts.map +1 -1
- package/dist/shared/social-icons.js +309 -313
- package/dist/shared/social-icons.js.map +1 -1
- package/dist/shared/theme.d.ts +83 -78
- package/dist/shared/theme.d.ts.map +1 -1
- package/dist/shared/theme.js +261 -18
- package/dist/shared/theme.js.map +1 -1
- package/dist/shared/themes/color-system.d.ts +16 -12
- package/dist/shared/themes/color-system.d.ts.map +1 -1
- package/dist/shared/themes/color-system.js +81 -89
- package/dist/shared/themes/color-system.js.map +1 -1
- package/dist/shared/utils/canvas-data-uri.d.ts +4 -1
- package/dist/shared/utils/canvas-data-uri.d.ts.map +1 -1
- package/dist/shared/utils/canvas-data-uri.js +4 -8
- package/dist/shared/utils/canvas-data-uri.js.map +1 -1
- package/dist/shared/utils/invariant.d.ts +4 -1
- package/dist/shared/utils/invariant.d.ts.map +1 -1
- package/dist/shared/utils/invariant.js +10 -8
- package/dist/shared/utils/invariant.js.map +1 -1
- package/dist/shared/utils/json-date.d.ts +9 -4
- package/dist/shared/utils/json-date.d.ts.map +1 -1
- package/dist/shared/utils/json-date.js +6 -8
- package/dist/shared/utils/json-date.js.map +1 -1
- package/dist/shared/utils/llm.d.ts +7 -2
- package/dist/shared/utils/llm.d.ts.map +1 -1
- package/dist/shared/utils/llm.js +57 -8
- package/dist/shared/utils/llm.js.map +1 -1
- package/dist/shared/utils/merge.d.ts +4 -1
- package/dist/shared/utils/merge.d.ts.map +1 -1
- package/dist/shared/utils/merge.js +11 -8
- package/dist/shared/utils/merge.js.map +1 -1
- package/dist/shared/utils/object-hash.d.ts +4 -1
- package/dist/shared/utils/object-hash.d.ts.map +1 -1
- package/dist/shared/utils/object-hash.js +8 -13
- package/dist/shared/utils/object-hash.js.map +1 -1
- package/dist/shared/utils/schema.d.ts +13 -10
- package/dist/shared/utils/schema.d.ts.map +1 -1
- package/dist/shared/utils/schema.js +91 -14
- package/dist/shared/utils/schema.js.map +1 -1
- package/dist/shared/utils/string-enum.d.ts +13 -8
- package/dist/shared/utils/string-enum.d.ts.map +1 -1
- package/dist/shared/utils/string-enum.js +18 -8
- package/dist/shared/utils/string-enum.js.map +1 -1
- package/dist/shared/utils/try-catch.d.ts +4 -2
- package/dist/shared/utils/try-catch.d.ts.map +1 -1
- package/dist/shared/utils/try-catch.js +12 -13
- package/dist/shared/utils/try-catch.js.map +1 -1
- package/package.json +10 -20
- package/src/shared/ai/schemas.ts +5 -3
- package/src/shared/attributes.ts +10 -6
- package/src/shared/bricks/manifests/card.manifest.ts +2 -5
- package/src/shared/bricks/manifests/image.manifest.ts +1 -5
- package/src/shared/bricks/props/color.ts +3 -2
- package/src/shared/bricks/props/dynamic.ts +4 -1
- package/src/shared/bricks/props/image.ts +2 -3
- package/src/shared/bricks.ts +3 -2
- package/src/shared/datarecords/types.ts +41 -33
- package/src/shared/datasources/external/rss/fetcher.ts +0 -6
- package/src/shared/datasources.ts +13 -5
- package/src/shared/prompt.ts +1 -1
- package/src/shared/site.ts +2 -1
- package/src/shared/sitemap.ts +7 -0
- package/src/shared/utils/schema.ts +12 -43
- package/src/shared/utils/tests/schema.test.ts +53 -28
- package/dist/shared/ai/types.js.map +0 -1
- package/dist/shared/ajv.d.ts +0 -7
- package/dist/shared/ajv.d.ts.map +0 -1
- package/dist/shared/ajv.js +0 -6866
- package/dist/shared/ajv.js.map +0 -1
- package/dist/shared/analytics/types.js.map +0 -1
- package/dist/shared/bricks/manifests/_types.js.map +0 -1
- package/dist/shared/bricks/manifests/tests/header.manifest.test.d.ts +0 -2
- package/dist/shared/bricks/manifests/tests/header.manifest.test.d.ts.map +0 -1
- package/dist/shared/bricks/props/tests/background.test.d.ts +0 -2
- package/dist/shared/bricks/props/tests/background.test.d.ts.map +0 -1
- package/dist/shared/bricks/props/tests/border.test.d.ts +0 -2
- package/dist/shared/bricks/props/tests/border.test.d.ts.map +0 -1
- package/dist/shared/bricks/props/tests/effects.test.d.ts +0 -2
- package/dist/shared/bricks/props/tests/effects.test.d.ts.map +0 -1
- package/dist/shared/bricks/props/tests/helpers.test.d.ts +0 -2
- package/dist/shared/bricks/props/tests/helpers.test.d.ts.map +0 -1
- package/dist/shared/bricks/props/tests/image.test.d.ts +0 -2
- package/dist/shared/bricks/props/tests/image.test.d.ts.map +0 -1
- package/dist/shared/bricks/props/tests/string.test.d.ts +0 -2
- package/dist/shared/bricks/props/tests/string.test.d.ts.map +0 -1
- package/dist/shared/bricks/props/types.js.map +0 -1
- package/dist/shared/chunk-2BPYOTKA.js +0 -21
- package/dist/shared/chunk-2BPYOTKA.js.map +0 -1
- package/dist/shared/chunk-2EOCK66Z.js +0 -19
- package/dist/shared/chunk-2EOCK66Z.js.map +0 -1
- package/dist/shared/chunk-2U5U3CCJ.js +0 -90
- package/dist/shared/chunk-2U5U3CCJ.js.map +0 -1
- package/dist/shared/chunk-2UEPTT5J.js +0 -67
- package/dist/shared/chunk-2UEPTT5J.js.map +0 -1
- package/dist/shared/chunk-2Z5WOCFS.js +0 -126
- package/dist/shared/chunk-2Z5WOCFS.js.map +0 -1
- package/dist/shared/chunk-34IUWNRX.js +0 -346
- package/dist/shared/chunk-34IUWNRX.js.map +0 -1
- package/dist/shared/chunk-3ZDN5BWN.js +0 -18
- package/dist/shared/chunk-3ZDN5BWN.js.map +0 -1
- package/dist/shared/chunk-55C6MTX2.js +0 -21
- package/dist/shared/chunk-55C6MTX2.js.map +0 -1
- package/dist/shared/chunk-57NRTXRA.js +0 -309
- package/dist/shared/chunk-57NRTXRA.js.map +0 -1
- package/dist/shared/chunk-5HJT5NJ3.js +0 -422
- package/dist/shared/chunk-5HJT5NJ3.js.map +0 -1
- package/dist/shared/chunk-5J4Y43RM.js +0 -388
- package/dist/shared/chunk-5J4Y43RM.js.map +0 -1
- package/dist/shared/chunk-5OVOXUFX.js +0 -61
- package/dist/shared/chunk-5OVOXUFX.js.map +0 -1
- package/dist/shared/chunk-5RCC2STG.js +0 -58
- package/dist/shared/chunk-5RCC2STG.js.map +0 -1
- package/dist/shared/chunk-5SNSUC6Q.js +0 -364
- package/dist/shared/chunk-5SNSUC6Q.js.map +0 -1
- package/dist/shared/chunk-6TVVKUWM.js +0 -15
- package/dist/shared/chunk-6TVVKUWM.js.map +0 -1
- package/dist/shared/chunk-6WIMWLCJ.js +0 -17
- package/dist/shared/chunk-6WIMWLCJ.js.map +0 -1
- package/dist/shared/chunk-7LAWWRU7.js +0 -21
- package/dist/shared/chunk-7LAWWRU7.js.map +0 -1
- package/dist/shared/chunk-B5T2LFV2.js +0 -494
- package/dist/shared/chunk-B5T2LFV2.js.map +0 -1
- package/dist/shared/chunk-BHARJBEK.js +0 -27
- package/dist/shared/chunk-BHARJBEK.js.map +0 -1
- package/dist/shared/chunk-DCM4732T.js +0 -146
- package/dist/shared/chunk-DCM4732T.js.map +0 -1
- package/dist/shared/chunk-E3ZW57HF.js +0 -843
- package/dist/shared/chunk-E3ZW57HF.js.map +0 -1
- package/dist/shared/chunk-EID5HPF3.js +0 -63
- package/dist/shared/chunk-EID5HPF3.js.map +0 -1
- package/dist/shared/chunk-EMF5TCPX.js +0 -389
- package/dist/shared/chunk-EMF5TCPX.js.map +0 -1
- package/dist/shared/chunk-EUFVTHAG.js +0 -33
- package/dist/shared/chunk-EUFVTHAG.js.map +0 -1
- package/dist/shared/chunk-FC52EHCC.js +0 -104
- package/dist/shared/chunk-FC52EHCC.js.map +0 -1
- package/dist/shared/chunk-FD7YYFRI.js +0 -225
- package/dist/shared/chunk-FD7YYFRI.js.map +0 -1
- package/dist/shared/chunk-FVV27R73.js +0 -269
- package/dist/shared/chunk-FVV27R73.js.map +0 -1
- package/dist/shared/chunk-FYGFB5U5.js +0 -57
- package/dist/shared/chunk-FYGFB5U5.js.map +0 -1
- package/dist/shared/chunk-GDYCCB3B.js +0 -22
- package/dist/shared/chunk-GDYCCB3B.js.map +0 -1
- package/dist/shared/chunk-GLV6QIIM.js +0 -41
- package/dist/shared/chunk-GLV6QIIM.js.map +0 -1
- package/dist/shared/chunk-GNTJT7MR.js +0 -56
- package/dist/shared/chunk-GNTJT7MR.js.map +0 -1
- package/dist/shared/chunk-HHUFGV7J.js +0 -259
- package/dist/shared/chunk-HHUFGV7J.js.map +0 -1
- package/dist/shared/chunk-HPCCD6V5.js +0 -17
- package/dist/shared/chunk-HPCCD6V5.js.map +0 -1
- package/dist/shared/chunk-IEMCCHM4.js +0 -389
- package/dist/shared/chunk-IEMCCHM4.js.map +0 -1
- package/dist/shared/chunk-IMDOF55E.js +0 -137
- package/dist/shared/chunk-IMDOF55E.js.map +0 -1
- package/dist/shared/chunk-IPWYNE6Y.js +0 -213
- package/dist/shared/chunk-IPWYNE6Y.js.map +0 -1
- package/dist/shared/chunk-J6R3GSKS.js +0 -386
- package/dist/shared/chunk-J6R3GSKS.js.map +0 -1
- package/dist/shared/chunk-KNREHAPN.js +0 -13
- package/dist/shared/chunk-KNREHAPN.js.map +0 -1
- package/dist/shared/chunk-KRODRZNS.js +0 -440
- package/dist/shared/chunk-KRODRZNS.js.map +0 -1
- package/dist/shared/chunk-KT7SSWMM.js +0 -24
- package/dist/shared/chunk-KT7SSWMM.js.map +0 -1
- package/dist/shared/chunk-KTA7XES3.js +0 -168
- package/dist/shared/chunk-KTA7XES3.js.map +0 -1
- package/dist/shared/chunk-L4W4B2RQ.js +0 -174
- package/dist/shared/chunk-L4W4B2RQ.js.map +0 -1
- package/dist/shared/chunk-MO6CRLQA.js +0 -73
- package/dist/shared/chunk-MO6CRLQA.js.map +0 -1
- package/dist/shared/chunk-NTP6BKRU.js +0 -516
- package/dist/shared/chunk-NTP6BKRU.js.map +0 -1
- package/dist/shared/chunk-O53V22BK.js +0 -469
- package/dist/shared/chunk-O53V22BK.js.map +0 -1
- package/dist/shared/chunk-O5PQISX4.js +0 -51
- package/dist/shared/chunk-O5PQISX4.js.map +0 -1
- package/dist/shared/chunk-OJ6KL7FU.js +0 -32
- package/dist/shared/chunk-OJ6KL7FU.js.map +0 -1
- package/dist/shared/chunk-OJP4HMJT.js +0 -22
- package/dist/shared/chunk-OJP4HMJT.js.map +0 -1
- package/dist/shared/chunk-ORIUCOED.js +0 -129
- package/dist/shared/chunk-ORIUCOED.js.map +0 -1
- package/dist/shared/chunk-OSJ6KGPX.js +0 -16
- package/dist/shared/chunk-OSJ6KGPX.js.map +0 -1
- package/dist/shared/chunk-OXYXZHP2.js +0 -48
- package/dist/shared/chunk-OXYXZHP2.js.map +0 -1
- package/dist/shared/chunk-PFZMRSHJ.js +0 -616
- package/dist/shared/chunk-PFZMRSHJ.js.map +0 -1
- package/dist/shared/chunk-QHKOAIOK.js +0 -243
- package/dist/shared/chunk-QHKOAIOK.js.map +0 -1
- package/dist/shared/chunk-QLQVDZIL.js +0 -11
- package/dist/shared/chunk-QLQVDZIL.js.map +0 -1
- package/dist/shared/chunk-RDOCVLCF.js +0 -422
- package/dist/shared/chunk-RDOCVLCF.js.map +0 -1
- package/dist/shared/chunk-RFH7PEVS.js +0 -38
- package/dist/shared/chunk-RFH7PEVS.js.map +0 -1
- package/dist/shared/chunk-T3UPW5OW.js +0 -79
- package/dist/shared/chunk-T3UPW5OW.js.map +0 -1
- package/dist/shared/chunk-TGKNA2JS.js +0 -847
- package/dist/shared/chunk-TGKNA2JS.js.map +0 -1
- package/dist/shared/chunk-TKMWY2VN.js +0 -18
- package/dist/shared/chunk-TKMWY2VN.js.map +0 -1
- package/dist/shared/chunk-TZ6X7ZM5.js +0 -158
- package/dist/shared/chunk-TZ6X7ZM5.js.map +0 -1
- package/dist/shared/chunk-UC75KRLX.js +0 -67
- package/dist/shared/chunk-UC75KRLX.js.map +0 -1
- package/dist/shared/chunk-VMIJ6MG5.js +0 -368
- package/dist/shared/chunk-VMIJ6MG5.js.map +0 -1
- package/dist/shared/chunk-VYA2FCTY.js +0 -83
- package/dist/shared/chunk-VYA2FCTY.js.map +0 -1
- package/dist/shared/chunk-WPZV3LYL.js +0 -24
- package/dist/shared/chunk-WPZV3LYL.js.map +0 -1
- package/dist/shared/chunk-XCWMZVF5.js +0 -89
- package/dist/shared/chunk-XCWMZVF5.js.map +0 -1
- package/dist/shared/chunk-XCZVD5H6.js +0 -13
- package/dist/shared/chunk-XCZVD5H6.js.map +0 -1
- package/dist/shared/chunk-XFZQGRRL.js +0 -101
- package/dist/shared/chunk-XFZQGRRL.js.map +0 -1
- package/dist/shared/chunk-XYWSIMZ6.js +0 -59
- package/dist/shared/chunk-XYWSIMZ6.js.map +0 -1
- package/dist/shared/chunk-XZ6WJZHN.js +0 -10
- package/dist/shared/chunk-XZ6WJZHN.js.map +0 -1
- package/dist/shared/chunk-ZEFOWKYP.js +0 -44
- package/dist/shared/chunk-ZEFOWKYP.js.map +0 -1
- package/dist/shared/chunk-ZGQ3AQBG.js +0 -33
- package/dist/shared/chunk-ZGQ3AQBG.js.map +0 -1
- package/dist/shared/chunk-ZRBTAC3G.js +0 -53
- package/dist/shared/chunk-ZRBTAC3G.js.map +0 -1
- package/dist/shared/chunk-ZYQZUWF7.js +0 -537
- package/dist/shared/chunk-ZYQZUWF7.js.map +0 -1
- package/dist/shared/chunk-ZZVYD4BG.js +0 -41
- package/dist/shared/chunk-ZZVYD4BG.js.map +0 -1
- package/dist/shared/datasources/external/facebook/posts/sample.d.ts +0 -26
- package/dist/shared/datasources/external/facebook/posts/sample.d.ts.map +0 -1
- package/dist/shared/datasources/external/facebook/posts/tests/fetcher.test.d.ts +0 -2
- package/dist/shared/datasources/external/facebook/posts/tests/fetcher.test.d.ts.map +0 -1
- package/dist/shared/datasources/external/http-json/tests/fetcher.test.d.ts +0 -2
- package/dist/shared/datasources/external/http-json/tests/fetcher.test.d.ts.map +0 -1
- package/dist/shared/datasources/external/instagram/feed/sample.d.ts +0 -3
- package/dist/shared/datasources/external/instagram/feed/sample.d.ts.map +0 -1
- package/dist/shared/datasources/external/instagram/feed/tests/fetcher.test.d.ts +0 -2
- package/dist/shared/datasources/external/instagram/feed/tests/fetcher.test.d.ts.map +0 -1
- package/dist/shared/datasources/external/mastodon/account/sample.d.ts +0 -30
- package/dist/shared/datasources/external/mastodon/account/sample.d.ts.map +0 -1
- package/dist/shared/datasources/external/mastodon/account/tests/fetcher.test.d.ts +0 -2
- package/dist/shared/datasources/external/mastodon/account/tests/fetcher.test.d.ts.map +0 -1
- package/dist/shared/datasources/external/mastodon/status/tests/fetcher.test.d.ts +0 -2
- package/dist/shared/datasources/external/mastodon/status/tests/fetcher.test.d.ts.map +0 -1
- package/dist/shared/datasources/external/rss/sample.d.ts +0 -3
- package/dist/shared/datasources/external/rss/sample.d.ts.map +0 -1
- package/dist/shared/datasources/external/threads/media/sample.d.ts +0 -40
- package/dist/shared/datasources/external/threads/media/sample.d.ts.map +0 -1
- package/dist/shared/datasources/external/tiktok/video/sample.d.ts +0 -15
- package/dist/shared/datasources/external/tiktok/video/sample.d.ts.map +0 -1
- package/dist/shared/datasources/external/youtube/list/sample.d.ts +0 -29
- package/dist/shared/datasources/external/youtube/list/sample.d.ts.map +0 -1
- package/dist/shared/datasources/fetcher.js.map +0 -1
- package/dist/shared/env.js.map +0 -1
- package/dist/shared/errors.d.ts.map +0 -1
- package/dist/shared/errors.js.map +0 -1
- package/dist/shared/tests/attributes.test.d.ts +0 -2
- package/dist/shared/tests/attributes.test.d.ts.map +0 -1
- package/dist/shared/themes/tests/color-system.test.d.ts +0 -2
- package/dist/shared/themes/tests/color-system.test.d.ts.map +0 -1
- package/dist/shared/utils/tests/schema.test.d.ts +0 -2
- package/dist/shared/utils/tests/schema.test.d.ts.map +0 -1
- package/src/shared/ajv.ts +0 -123
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/shared/datarecords/external/google/oauth/config.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\n\nconst googleOAuthTokenSchema = Type.Object({\n access_token: Type.String(),\n token_type: Type.String(), // Usually \"Bearer\"\n expires_in: Type.Number(), // Seconds until token expires, typically 3600 (1 hour)\n refresh_token: Type.Optional(Type.String()), // Only present in first OAuth exchange\n scope: Type.String(), // Space-separated list of granted scopes\n id_token: Type.Optional(Type.String()), // JWT token containing user info, if requested\n});\n\nexport type GoogleOAuthToken = Static<typeof googleOAuthTokenSchema>;\n\n// You might also want to define the decoded id_token structure:\nconst googleIdTokenSchema = Type.Object({\n iss: Type.String(), // Issuer (usually 'https://accounts.google.com')\n sub: Type.String(), // Unique Google ID for the user\n aud: Type.String(), // Your client ID\n iat: Type.Number(), // Issued at (timestamp)\n exp: Type.Number(), // Expiration time (timestamp)\n email: Type.Optional(Type.String()),\n email_verified: Type.Optional(Type.Boolean()),\n name: Type.Optional(Type.String()),\n picture: Type.Optional(Type.String()),\n given_name: Type.Optional(Type.String()),\n family_name: Type.Optional(Type.String()),\n locale: Type.Optional(Type.String()),\n});\n\nexport type GoogleIdToken = Static<typeof googleIdTokenSchema>;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","names":[],"sources":["../../../../../../src/shared/datarecords/external/google/oauth/config.ts"],"sourcesContent":["import { Type, type Static } from \"@sinclair/typebox\";\n\nconst googleOAuthTokenSchema = Type.Object({\n access_token: Type.String(),\n token_type: Type.String(), // Usually \"Bearer\"\n expires_in: Type.Number(), // Seconds until token expires, typically 3600 (1 hour)\n refresh_token: Type.Optional(Type.String()), // Only present in first OAuth exchange\n scope: Type.String(), // Space-separated list of granted scopes\n id_token: Type.Optional(Type.String()), // JWT token containing user info, if requested\n});\n\nexport type GoogleOAuthToken = Static<typeof googleOAuthTokenSchema>;\n\n// You might also want to define the decoded id_token structure:\nconst googleIdTokenSchema = Type.Object({\n iss: Type.String(), // Issuer (usually 'https://accounts.google.com')\n sub: Type.String(), // Unique Google ID for the user\n aud: Type.String(), // Your client ID\n iat: Type.Number(), // Issued at (timestamp)\n exp: Type.Number(), // Expiration time (timestamp)\n email: Type.Optional(Type.String()),\n email_verified: Type.Optional(Type.Boolean()),\n name: Type.Optional(Type.String()),\n picture: Type.Optional(Type.String()),\n given_name: Type.Optional(Type.String()),\n family_name: Type.Optional(Type.String()),\n locale: Type.Optional(Type.String()),\n});\n\nexport type GoogleIdToken = Static<typeof googleIdTokenSchema>;\n"],"mappings":";;;AAE+B,KAAK,OAAO;CACzC,cAAc,KAAK,QAAQ;CAC3B,YAAY,KAAK,QAAQ;CACzB,YAAY,KAAK,QAAQ;CACzB,eAAe,KAAK,SAAS,KAAK,QAAQ,CAAC;CAC3C,OAAO,KAAK,QAAQ;CACpB,UAAU,KAAK,SAAS,KAAK,QAAQ,CAAC;CACvC,CAAC;AAK0B,KAAK,OAAO;CACtC,KAAK,KAAK,QAAQ;CAClB,KAAK,KAAK,QAAQ;CAClB,KAAK,KAAK,QAAQ;CAClB,KAAK,KAAK,QAAQ;CAClB,KAAK,KAAK,QAAQ;CAClB,OAAO,KAAK,SAAS,KAAK,QAAQ,CAAC;CACnC,gBAAgB,KAAK,SAAS,KAAK,SAAS,CAAC;CAC7C,MAAM,KAAK,SAAS,KAAK,QAAQ,CAAC;CAClC,SAAS,KAAK,SAAS,KAAK,QAAQ,CAAC;CACrC,YAAY,KAAK,SAAS,KAAK,QAAQ,CAAC;CACxC,aAAa,KAAK,SAAS,KAAK,QAAQ,CAAC;CACzC,QAAQ,KAAK,SAAS,KAAK,QAAQ,CAAC;CACrC,CAAC"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
//#region src/shared/datarecords/external/google/sheets/client.d.ts
|
|
1
2
|
interface ApiResponse<T> {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
success: boolean;
|
|
4
|
+
data: T;
|
|
5
|
+
status: number;
|
|
6
|
+
headers: Headers;
|
|
6
7
|
}
|
|
7
8
|
declare class GoogleDriveClient {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
private accessToken;
|
|
10
|
+
constructor(accessToken: string);
|
|
11
|
+
callDriveApi<T>(endpoint: string, method?: "GET" | "POST" | "PUT" | "PATCH", body?: unknown): Promise<ApiResponse<T>>;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
declare function getClient(accessToken: string): GoogleDriveClient;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { getClient as default };
|
|
14
16
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","
|
|
1
|
+
{"version":3,"file":"client.d.ts","names":[],"sources":["../../../../../../src/shared/datarecords/external/google/sheets/client.ts"],"sourcesContent":[],"mappings":";UAAU;EAAA,OAAA,EAAA,OAAW;EAAA,IAAA,EAEb,CAFa;QAEb,EAAA,MAAA;SAEG,EAAA,OAAA;;AAAO,cAGZ,iBAAA,CAAiB;EAAA,QAAA,WAAA;aAWE,CAAA,WAAA,EAAA,MAAA;cAAZ,CAAA,CAAA,CAAA,CAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,KAAA,GAAA,MAAA,GAAA,KAAA,GAAA,OAAA,EAAA,IAAA,CAAA,EAAA,OAAA,CAAA,EAAR,OAAQ,CAAA,WAAA,CAAY,CAAZ,CAAA,CAAA;;AAAD,iBA2FY,SAAA,CA3FZ,WAAA,EAAA,MAAA,CAAA,EA2F4C,iBA3F5C"}
|
|
@@ -1,10 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
//#region src/shared/datarecords/external/google/sheets/client.ts
|
|
2
|
+
var GoogleDriveClient = class {
|
|
3
|
+
accessToken;
|
|
4
|
+
constructor(accessToken) {
|
|
5
|
+
this.accessToken = accessToken;
|
|
6
|
+
}
|
|
7
|
+
async callDriveApi(endpoint, method = "GET", body) {
|
|
8
|
+
const isBinaryUpload = body instanceof ArrayBuffer || body instanceof Uint8Array;
|
|
9
|
+
const headers = { Authorization: `Bearer ${this.accessToken}` };
|
|
10
|
+
if (!isBinaryUpload) headers["Content-Type"] = "application/json";
|
|
11
|
+
else headers["Content-Type"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
12
|
+
const response = await fetch(endpoint, {
|
|
13
|
+
method,
|
|
14
|
+
headers,
|
|
15
|
+
body: isBinaryUpload ? body : body ? JSON.stringify(body) : void 0
|
|
16
|
+
});
|
|
17
|
+
if (endpoint.includes("export") && endpoint.includes("mimeType=text/csv")) {
|
|
18
|
+
const csvText = await response.text();
|
|
19
|
+
return {
|
|
20
|
+
success: response.ok,
|
|
21
|
+
data: csvText,
|
|
22
|
+
status: response.status,
|
|
23
|
+
headers: response.headers
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if (endpoint.includes("export") && endpoint.includes("mimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) {
|
|
27
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
28
|
+
return {
|
|
29
|
+
success: response.ok,
|
|
30
|
+
data: arrayBuffer,
|
|
31
|
+
status: response.status,
|
|
32
|
+
headers: response.headers
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (endpoint.includes("upload/") && response.ok) try {
|
|
36
|
+
const data$1 = await response.json();
|
|
37
|
+
return {
|
|
38
|
+
success: response.ok,
|
|
39
|
+
data: data$1,
|
|
40
|
+
status: response.status,
|
|
41
|
+
headers: response.headers
|
|
42
|
+
};
|
|
43
|
+
} catch {
|
|
44
|
+
return {
|
|
45
|
+
success: true,
|
|
46
|
+
data: { message: "Upload successful" },
|
|
47
|
+
status: response.status,
|
|
48
|
+
headers: response.headers
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
if (response.headers.get("content-type")?.includes("text/html")) return {
|
|
53
|
+
success: false,
|
|
54
|
+
data: {
|
|
55
|
+
error: "HTML error response",
|
|
56
|
+
details: (await response.text()).substring(0, 200)
|
|
57
|
+
},
|
|
58
|
+
status: response.status,
|
|
59
|
+
headers: response.headers
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const data = await response.json();
|
|
63
|
+
return {
|
|
64
|
+
success: response.ok,
|
|
65
|
+
data,
|
|
66
|
+
status: response.status,
|
|
67
|
+
headers: response.headers
|
|
68
|
+
};
|
|
69
|
+
}
|
|
9
70
|
};
|
|
71
|
+
function getClient(accessToken) {
|
|
72
|
+
return new GoogleDriveClient(accessToken);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
//#endregion
|
|
76
|
+
export { getClient as default };
|
|
10
77
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"
|
|
1
|
+
{"version":3,"file":"client.js","names":["headers: Record<string, string>","data"],"sources":["../../../../../../src/shared/datarecords/external/google/sheets/client.ts"],"sourcesContent":["interface ApiResponse<T> {\n success: boolean;\n data: T;\n status: number;\n headers: Headers;\n}\n\nclass GoogleDriveClient {\n private accessToken: string;\n\n constructor(accessToken: string) {\n this.accessToken = accessToken;\n }\n\n async callDriveApi<T>(\n endpoint: string,\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" = \"GET\",\n body?: unknown,\n ): Promise<ApiResponse<T>> {\n // Handle binary data for uploads\n const isBinaryUpload = body instanceof ArrayBuffer || body instanceof Uint8Array;\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.accessToken}`,\n };\n\n if (!isBinaryUpload) {\n headers[\"Content-Type\"] = \"application/json\";\n } else {\n headers[\"Content-Type\"] = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n }\n\n const response = await fetch(endpoint, {\n method,\n headers,\n body: isBinaryUpload ? (body as BodyInit) : body ? JSON.stringify(body) : undefined,\n });\n\n // Handle CSV responses\n if (endpoint.includes(\"export\") && endpoint.includes(\"mimeType=text/csv\")) {\n const csvText = await response.text();\n return {\n success: response.ok,\n data: csvText as T,\n status: response.status,\n headers: response.headers,\n };\n }\n\n // Handle binary responses (like XLSX downloads) - keeping for compatibility\n if (\n endpoint.includes(\"export\") &&\n endpoint.includes(\"mimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\")\n ) {\n const arrayBuffer = await response.arrayBuffer();\n return {\n success: response.ok,\n data: arrayBuffer as T,\n status: response.status,\n headers: response.headers,\n };\n }\n\n // Handle upload responses which might not be JSON\n if (endpoint.includes(\"upload/\") && response.ok) {\n // For successful uploads, try to parse JSON, but fallback gracefully\n try {\n const data = await response.json();\n return {\n success: response.ok,\n data,\n status: response.status,\n headers: response.headers,\n };\n } catch {\n // If JSON parsing fails but response is ok, return success\n return {\n success: true,\n data: { message: \"Upload successful\" } as T,\n status: response.status,\n headers: response.headers,\n };\n }\n }\n\n // Handle error responses that might be HTML\n if (!response.ok) {\n const contentType = response.headers.get(\"content-type\");\n if (contentType?.includes(\"text/html\")) {\n const errorText = await response.text();\n return {\n success: false,\n data: { error: \"HTML error response\", details: errorText.substring(0, 200) } as T,\n status: response.status,\n headers: response.headers,\n };\n }\n }\n\n const data = await response.json();\n\n return {\n success: response.ok,\n data,\n status: response.status,\n headers: response.headers,\n };\n }\n}\n\nexport default function getClient(accessToken: string): GoogleDriveClient {\n return new GoogleDriveClient(accessToken);\n}\n"],"mappings":";AAOA,IAAM,oBAAN,MAAwB;CACtB,AAAQ;CAER,YAAY,aAAqB;AAC/B,OAAK,cAAc;;CAGrB,MAAM,aACJ,UACA,SAA2C,OAC3C,MACyB;EAEzB,MAAM,iBAAiB,gBAAgB,eAAe,gBAAgB;EACtE,MAAMA,UAAkC,EACtC,eAAe,UAAU,KAAK,eAC/B;AAED,MAAI,CAAC,eACH,SAAQ,kBAAkB;MAE1B,SAAQ,kBAAkB;EAG5B,MAAM,WAAW,MAAM,MAAM,UAAU;GACrC;GACA;GACA,MAAM,iBAAkB,OAAoB,OAAO,KAAK,UAAU,KAAK,GAAG;GAC3E,CAAC;AAGF,MAAI,SAAS,SAAS,SAAS,IAAI,SAAS,SAAS,oBAAoB,EAAE;GACzE,MAAM,UAAU,MAAM,SAAS,MAAM;AACrC,UAAO;IACL,SAAS,SAAS;IAClB,MAAM;IACN,QAAQ,SAAS;IACjB,SAAS,SAAS;IACnB;;AAIH,MACE,SAAS,SAAS,SAAS,IAC3B,SAAS,SAAS,6EAA6E,EAC/F;GACA,MAAM,cAAc,MAAM,SAAS,aAAa;AAChD,UAAO;IACL,SAAS,SAAS;IAClB,MAAM;IACN,QAAQ,SAAS;IACjB,SAAS,SAAS;IACnB;;AAIH,MAAI,SAAS,SAAS,UAAU,IAAI,SAAS,GAE3C,KAAI;GACF,MAAMC,SAAO,MAAM,SAAS,MAAM;AAClC,UAAO;IACL,SAAS,SAAS;IAClB;IACA,QAAQ,SAAS;IACjB,SAAS,SAAS;IACnB;UACK;AAEN,UAAO;IACL,SAAS;IACT,MAAM,EAAE,SAAS,qBAAqB;IACtC,QAAQ,SAAS;IACjB,SAAS,SAAS;IACnB;;AAKL,MAAI,CAAC,SAAS,IAEZ;OADoB,SAAS,QAAQ,IAAI,eAAe,EACvC,SAAS,YAAY,CAEpC,QAAO;IACL,SAAS;IACT,MAAM;KAAE,OAAO;KAAuB,UAHtB,MAAM,SAAS,MAAM,EAGoB,UAAU,GAAG,IAAI;KAAE;IAC5E,QAAQ,SAAS;IACjB,SAAS,SAAS;IACnB;;EAIL,MAAM,OAAO,MAAM,SAAS,MAAM;AAElC,SAAO;GACL,SAAS,SAAS;GAClB;GACA,QAAQ,SAAS;GACjB,SAAS,SAAS;GACnB;;;AAIL,SAAwB,UAAU,aAAwC;AACxE,QAAO,IAAI,kBAAkB,YAAY"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { GoogleSheetsOptions } from "./types.js";
|
|
2
|
+
import { TObject, TProperties } from "@sinclair/typebox";
|
|
3
|
+
|
|
4
|
+
//#region src/shared/datarecords/external/google/sheets/handler.d.ts
|
|
5
|
+
declare function saveRecord({
|
|
6
|
+
formData,
|
|
7
|
+
options,
|
|
8
|
+
properties,
|
|
9
|
+
accessToken
|
|
10
|
+
}: {
|
|
11
|
+
formData: FormData;
|
|
12
|
+
options: GoogleSheetsOptions;
|
|
13
|
+
properties: TProperties;
|
|
14
|
+
accessToken: string;
|
|
8
15
|
}): Promise<boolean>;
|
|
9
16
|
/**
|
|
10
17
|
* Create a spreadsheet in Google Sheets
|
|
@@ -13,18 +20,29 @@ export declare function saveRecord({ formData, options, properties, accessToken,
|
|
|
13
20
|
* @param accessToken
|
|
14
21
|
* @returns
|
|
15
22
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
declare function createTable({
|
|
24
|
+
name,
|
|
25
|
+
schema,
|
|
26
|
+
accessToken
|
|
27
|
+
}: {
|
|
28
|
+
name: string;
|
|
29
|
+
schema: TObject;
|
|
30
|
+
accessToken: string;
|
|
20
31
|
}): Promise<{
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
spreadsheetId: string;
|
|
33
|
+
spreadsheetUrl: string;
|
|
23
34
|
}>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
declare function updateTable({
|
|
36
|
+
spreadsheetId,
|
|
37
|
+
newName,
|
|
38
|
+
newProperties,
|
|
39
|
+
accessToken
|
|
40
|
+
}: {
|
|
41
|
+
spreadsheetId: string;
|
|
42
|
+
newName?: string;
|
|
43
|
+
newProperties?: TProperties;
|
|
44
|
+
accessToken: string;
|
|
29
45
|
}): Promise<void>;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { createTable, saveRecord, updateTable };
|
|
30
48
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","
|
|
1
|
+
{"version":3,"file":"handler.d.ts","names":[],"sources":["../../../../../../src/shared/datarecords/external/google/sheets/handler.ts"],"sourcesContent":[],"mappings":";;;;iBAiEsB,UAAA;;;;;;YAMV;EANU,OAAA,EAOX,mBAPqB;EAAA,UAAA,EAQlB,WARkB;aAC9B,EAAA,MAAA;IASE,OARF,CAAA,OAAA,CAAA;;;;;;;;AA0DoB,iBAAA,WAAA,CAAW;EAAA,IAAA;EAAA,MAAA;EAAA;CAAA,EAAA;EAAA,IAAA,EAAA,MAAA;QAC/B,EAKQ,OALR;aACA,EAAA,MAAA;IAME,OALF,CAAA;eAGQ,EAAA,MAAA;gBAEN,EAAA,MAAA;CAAO,CAAA;AAkEW,iBAAA,WAAA,CAAW;EAAA,aAAA;EAAA,OAAA;EAAA,aAAA;EAAA;CAAA,EAAA;EAAA,aAAA,EAAA,MAAA;SAC/B,CAAA,EAAA,MAAA;eACA,CAAA,EAMgB,WANhB;aACA,EAAA,MAAA;IAOE,OANF,CAAA,IAAA,CAAA"}
|
|
@@ -1,187 +1,114 @@
|
|
|
1
|
-
|
|
1
|
+
import getClient from "./client.js";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
getClient
|
|
5
|
-
} from "../../../../chunk-XCWMZVF5.js";
|
|
6
|
-
import "../../../../chunk-ZGQ3AQBG.js";
|
|
7
|
-
|
|
8
|
-
// src/shared/datarecords/external/google/sheets/handler.ts
|
|
3
|
+
//#region src/shared/datarecords/external/google/sheets/handler.ts
|
|
9
4
|
async function downloadGoogleSheetsData(spreadsheetId, accessToken) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
return response.data;
|
|
20
|
-
} catch (error) {
|
|
21
|
-
console.error("Error downloading Google Sheets data:", error);
|
|
22
|
-
throw error;
|
|
23
|
-
}
|
|
5
|
+
try {
|
|
6
|
+
const response = await getClient(accessToken).callDriveApi(`https://www.googleapis.com/drive/v3/files/${spreadsheetId}/export?mimeType=text/csv`, "GET");
|
|
7
|
+
if (!response.success) throw new Error(`Failed to download spreadsheet: ${response.status}`);
|
|
8
|
+
return response.data;
|
|
9
|
+
} catch (error) {
|
|
10
|
+
console.error("Error downloading Google Sheets data:", error);
|
|
11
|
+
throw error;
|
|
12
|
+
}
|
|
24
13
|
}
|
|
25
14
|
async function uploadGoogleSheetsData(spreadsheetId, csvLines, accessToken) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const uploadResponse = await fetch(uploadUrl, {
|
|
44
|
-
method: "PUT",
|
|
45
|
-
headers: {
|
|
46
|
-
"Content-Type": "text/csv"
|
|
47
|
-
},
|
|
48
|
-
body: csvLines.map((line) => line.replace("\r", "")).join("\n")
|
|
49
|
-
});
|
|
50
|
-
return uploadResponse.ok;
|
|
51
|
-
} catch (error) {
|
|
52
|
-
console.error("Error uploading Google Sheets data:", error);
|
|
53
|
-
throw error;
|
|
54
|
-
}
|
|
15
|
+
try {
|
|
16
|
+
const initResponse = await getClient(accessToken).callDriveApi(`https://www.googleapis.com/upload/drive/v3/files/${spreadsheetId}?uploadType=resumable`, "PATCH", { mimeType: "application/vnd.google-apps.spreadsheet" });
|
|
17
|
+
if (!initResponse.success) {
|
|
18
|
+
const errorText = initResponse.data;
|
|
19
|
+
throw new Error(`Failed to initiate upload: ${initResponse.status} - ${errorText}`);
|
|
20
|
+
}
|
|
21
|
+
const uploadUrl = initResponse.headers.get("Location");
|
|
22
|
+
if (!uploadUrl) throw new Error("No upload URL returned from Google Drive");
|
|
23
|
+
return (await fetch(uploadUrl, {
|
|
24
|
+
method: "PUT",
|
|
25
|
+
headers: { "Content-Type": "text/csv" },
|
|
26
|
+
body: csvLines.map((line) => line.replace("\r", "")).join("\n")
|
|
27
|
+
})).ok;
|
|
28
|
+
} catch (error) {
|
|
29
|
+
console.error("Error uploading Google Sheets data:", error);
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
55
32
|
}
|
|
56
|
-
async function saveRecord({
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
const orderedHeaders = buildGoogleSheetHeaders(properties);
|
|
76
|
-
const newCsvRow = orderedHeaders.map((header) => {
|
|
77
|
-
const value = record[header]?.toString() || "";
|
|
78
|
-
if (value.includes(",") || value.includes('"') || value.includes("\n")) {
|
|
79
|
-
return `"${value.replace(/"/g, '""')}"`;
|
|
80
|
-
}
|
|
81
|
-
return value;
|
|
82
|
-
}).join(",");
|
|
83
|
-
csvLines.push(newCsvRow);
|
|
84
|
-
return uploadGoogleSheetsData(options.spreadsheetId, csvLines, accessToken);
|
|
85
|
-
} catch (error) {
|
|
86
|
-
console.error("Error pushing data to Google Sheets:", error);
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
33
|
+
async function saveRecord({ formData, options, properties, accessToken }) {
|
|
34
|
+
try {
|
|
35
|
+
if (!accessToken) throw new Error("Access token is required");
|
|
36
|
+
if (!options.spreadsheetId) throw new Error("Spreadsheet ID is required");
|
|
37
|
+
const csvLines = (await downloadGoogleSheetsData(options.spreadsheetId, accessToken)).trim().split("\n");
|
|
38
|
+
const record = {};
|
|
39
|
+
for (const [key, value] of formData.entries()) record[key] = value;
|
|
40
|
+
const newCsvRow = buildGoogleSheetHeaders(properties).map((header) => {
|
|
41
|
+
const value = record[header]?.toString() || "";
|
|
42
|
+
if (value.includes(",") || value.includes("\"") || value.includes("\n")) return `"${value.replace(/"/g, "\"\"")}"`;
|
|
43
|
+
return value;
|
|
44
|
+
}).join(",");
|
|
45
|
+
csvLines.push(newCsvRow);
|
|
46
|
+
return uploadGoogleSheetsData(options.spreadsheetId, csvLines, accessToken);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
console.error("Error pushing data to Google Sheets:", error);
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
89
51
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
};
|
|
117
|
-
} catch (error) {
|
|
118
|
-
console.error("Error creating Google Sheets spreadsheet:", error);
|
|
119
|
-
throw error;
|
|
120
|
-
}
|
|
52
|
+
/**
|
|
53
|
+
* Create a spreadsheet in Google Sheets
|
|
54
|
+
* @param title
|
|
55
|
+
* @param schema
|
|
56
|
+
* @param accessToken
|
|
57
|
+
* @returns
|
|
58
|
+
*/
|
|
59
|
+
async function createTable({ name, schema, accessToken }) {
|
|
60
|
+
try {
|
|
61
|
+
const createResponse = await getClient(accessToken).callDriveApi("https://www.googleapis.com/drive/v3/files", "POST", {
|
|
62
|
+
name,
|
|
63
|
+
mimeType: "application/vnd.google-apps.spreadsheet"
|
|
64
|
+
});
|
|
65
|
+
if (!createResponse.success) throw new Error(`Failed to create spreadsheet: ${createResponse.status}`);
|
|
66
|
+
const spreadsheetId = createResponse.data.id;
|
|
67
|
+
const spreadsheetUrl = `https://docs.google.com/spreadsheets/d/${spreadsheetId}/edit`;
|
|
68
|
+
const headerLine = buildGoogleSheetHeaders(schema.properties).join(",");
|
|
69
|
+
await uploadGoogleSheetsData(spreadsheetId, [headerLine], accessToken);
|
|
70
|
+
return {
|
|
71
|
+
spreadsheetId,
|
|
72
|
+
spreadsheetUrl
|
|
73
|
+
};
|
|
74
|
+
} catch (error) {
|
|
75
|
+
console.error("Error creating Google Sheets spreadsheet:", error);
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
121
78
|
}
|
|
122
79
|
function buildGoogleSheetHeaders(properties) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
return 1;
|
|
134
|
-
}
|
|
135
|
-
return 0;
|
|
136
|
-
});
|
|
137
|
-
const fields = sortedEntries.map(([fieldName, field]) => {
|
|
138
|
-
return fieldName;
|
|
139
|
-
});
|
|
140
|
-
return fields;
|
|
80
|
+
return Object.entries(properties).sort(([, fieldA], [, fieldB]) => {
|
|
81
|
+
const orderA = fieldA.metadata?.order;
|
|
82
|
+
const orderB = fieldB.metadata?.order;
|
|
83
|
+
if (orderA !== void 0 && orderB !== void 0) return orderA - orderB;
|
|
84
|
+
if (orderA !== void 0 && orderB === void 0) return -1;
|
|
85
|
+
if (orderA === void 0 && orderB !== void 0) return 1;
|
|
86
|
+
return 0;
|
|
87
|
+
}).map(([fieldName, field]) => {
|
|
88
|
+
return fieldName;
|
|
89
|
+
});
|
|
141
90
|
}
|
|
142
|
-
async function updateTable({
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const existingData = await downloadGoogleSheetsData(spreadsheetId, accessToken);
|
|
162
|
-
const currentLines = existingData.split("\n");
|
|
163
|
-
const csvLines = currentLines.map((line, index) => {
|
|
164
|
-
if (index === 0) {
|
|
165
|
-
const currentHeaders = line.split(",");
|
|
166
|
-
const allHeaders = [...currentHeaders, ...newHeaders];
|
|
167
|
-
return allHeaders.join(",");
|
|
168
|
-
} else {
|
|
169
|
-
const currentValues = line.split(",");
|
|
170
|
-
const newValues = newHeaders.map(() => "");
|
|
171
|
-
const updatedValues = [...currentValues, ...newValues];
|
|
172
|
-
return updatedValues.join(",");
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
await uploadGoogleSheetsData(spreadsheetId, csvLines, accessToken);
|
|
176
|
-
}
|
|
177
|
-
} catch (error) {
|
|
178
|
-
console.error("Error updating Google Sheets spreadsheet:", error);
|
|
179
|
-
throw error;
|
|
180
|
-
}
|
|
91
|
+
async function updateTable({ spreadsheetId, newName, newProperties, accessToken }) {
|
|
92
|
+
try {
|
|
93
|
+
if (newName) await getClient(accessToken).callDriveApi(`https://www.googleapis.com/drive/v3/files/${spreadsheetId}`, "PATCH", { name: newName });
|
|
94
|
+
if (newProperties) {
|
|
95
|
+
const newHeaders = buildGoogleSheetHeaders(newProperties);
|
|
96
|
+
const csvLines = (await downloadGoogleSheetsData(spreadsheetId, accessToken)).split("\n").map((line, index) => {
|
|
97
|
+
if (index === 0) return [...line.split(","), ...newHeaders].join(",");
|
|
98
|
+
else {
|
|
99
|
+
const currentValues = line.split(",");
|
|
100
|
+
const newValues = newHeaders.map(() => "");
|
|
101
|
+
return [...currentValues, ...newValues].join(",");
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
await uploadGoogleSheetsData(spreadsheetId, csvLines, accessToken);
|
|
105
|
+
}
|
|
106
|
+
} catch (error) {
|
|
107
|
+
console.error("Error updating Google Sheets spreadsheet:", error);
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
181
110
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
updateTable
|
|
186
|
-
};
|
|
111
|
+
|
|
112
|
+
//#endregion
|
|
113
|
+
export { createTable, saveRecord, updateTable };
|
|
187
114
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/shared/datarecords/external/google/sheets/handler.ts"],"sourcesContent":["import type { TObject, TProperties } from \"@sinclair/typebox\";\nimport getClient from \"./client\";\nimport type { GoogleSheetsOptions } from \"./types\";\n\nasync function downloadGoogleSheetsData(spreadsheetId: string, accessToken: string): Promise<string> {\n try {\n const client = getClient(accessToken);\n const response = await client.callDriveApi<string>(\n `https://www.googleapis.com/drive/v3/files/${spreadsheetId}/export?mimeType=text/csv`,\n \"GET\",\n );\n\n if (!response.success) {\n throw new Error(`Failed to download spreadsheet: ${response.status}`);\n }\n\n return response.data;\n } catch (error) {\n console.error(\"Error downloading Google Sheets data:\", error);\n throw error;\n }\n}\n\nasync function uploadGoogleSheetsData(\n spreadsheetId: string,\n csvLines: string[],\n accessToken: string,\n): Promise<boolean> {\n try {\n const client = getClient(accessToken);\n // Use resumable upload to ensure the content is properly converted\n const initResponse = await client.callDriveApi<string>(\n `https://www.googleapis.com/upload/drive/v3/files/${spreadsheetId}?uploadType=resumable`,\n \"PATCH\",\n {\n mimeType: \"application/vnd.google-apps.spreadsheet\",\n },\n );\n\n if (!initResponse.success) {\n const errorText = initResponse.data;\n throw new Error(`Failed to initiate upload: ${initResponse.status} - ${errorText}`);\n }\n\n const uploadUrl = initResponse.headers.get(\"Location\");\n\n if (!uploadUrl) {\n throw new Error(\"No upload URL returned from Google Drive\");\n }\n\n // Upload the CSV content\n const uploadResponse = await fetch(uploadUrl, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"text/csv\",\n },\n body: csvLines.map((line) => line.replace(\"\\r\", \"\")).join(\"\\n\"),\n });\n return uploadResponse.ok;\n } catch (error) {\n console.error(\"Error uploading Google Sheets data:\", error);\n throw error;\n }\n}\n\nexport async function saveRecord({\n formData,\n options,\n properties,\n accessToken,\n}: {\n formData: FormData;\n options: GoogleSheetsOptions;\n properties: TProperties;\n accessToken: string;\n}): Promise<boolean> {\n try {\n if (!accessToken) {\n throw new Error(\"Access token is required\");\n }\n\n if (!options.spreadsheetId) {\n throw new Error(\"Spreadsheet ID is required\");\n }\n\n // Download existing CSV data\n const existingCsv = await downloadGoogleSheetsData(options.spreadsheetId, accessToken);\n const csvLines = existingCsv.trim().split(\"\\n\");\n\n // Convert FormData to a record object\n const record: Record<string, unknown> = {};\n for (const [key, value] of formData.entries()) {\n record[key] = value;\n }\n\n // build new csv line using the metadata.order of properties\n const orderedHeaders = buildGoogleSheetHeaders(properties);\n const newCsvRow = orderedHeaders\n .map((header) => {\n const value = record[header]?.toString() || \"\";\n // Escape CSV values that contain commas, quotes, or newlines\n if (value.includes(\",\") || value.includes('\"') || value.includes(\"\\n\")) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`;\n }\n return value;\n })\n .join(\",\");\n\n // Add new rows to CSV\n csvLines.push(newCsvRow);\n\n return uploadGoogleSheetsData(options.spreadsheetId, csvLines, accessToken);\n } catch (error) {\n console.error(\"Error pushing data to Google Sheets:\", error);\n return false;\n }\n}\n\n/**\n * Create a spreadsheet in Google Sheets\n * @param title\n * @param schema\n * @param accessToken\n * @returns\n */\nexport async function createTable({\n name,\n schema,\n accessToken,\n}: {\n name: string;\n schema: TObject;\n accessToken: string;\n}): Promise<{ spreadsheetId: string; spreadsheetUrl: string }> {\n try {\n const client = getClient(accessToken);\n\n // First create the file\n const createResponse = await client.callDriveApi<{ id: string }>(\n \"https://www.googleapis.com/drive/v3/files\",\n \"POST\",\n {\n name: name,\n mimeType: \"application/vnd.google-apps.spreadsheet\",\n },\n );\n\n if (!createResponse.success) {\n throw new Error(`Failed to create spreadsheet: ${createResponse.status}`);\n }\n\n const spreadsheetId = createResponse.data.id;\n\n const spreadsheetUrl = `https://docs.google.com/spreadsheets/d/${spreadsheetId}/edit`;\n\n const headers = buildGoogleSheetHeaders(schema.properties as TProperties);\n const headerLine = headers.join(\",\");\n\n await uploadGoogleSheetsData(spreadsheetId, [headerLine], accessToken);\n return {\n spreadsheetId,\n spreadsheetUrl,\n };\n } catch (error) {\n console.error(\"Error creating Google Sheets spreadsheet:\", error);\n throw error;\n }\n}\n\nfunction buildGoogleSheetHeaders(properties: TProperties) {\n // Sort fields by metadata.order (ascending), then fields without order\n const sortedEntries = Object.entries(properties).sort(([, fieldA], [, fieldB]) => {\n const orderA = fieldA.metadata?.order;\n const orderB = fieldB.metadata?.order;\n\n // If both have order, sort by order value\n if (orderA !== undefined && orderB !== undefined) {\n return orderA - orderB;\n }\n\n // Fields with order come first\n if (orderA !== undefined && orderB === undefined) {\n return -1;\n }\n\n if (orderA === undefined && orderB !== undefined) {\n return 1;\n }\n\n // Both without order, maintain original order\n return 0;\n });\n\n const fields = sortedEntries.map(([fieldName, field]) => {\n return fieldName;\n });\n return fields;\n}\n\nexport async function updateTable({\n spreadsheetId,\n newName,\n newProperties,\n accessToken,\n}: {\n spreadsheetId: string;\n newName?: string;\n newProperties?: TProperties;\n accessToken: string;\n}): Promise<void> {\n try {\n // rename spreadsheet\n if (newName) {\n const client = getClient(accessToken);\n await client.callDriveApi<string>(\n `https://www.googleapis.com/drive/v3/files/${spreadsheetId}`,\n \"PATCH\",\n {\n name: newName,\n },\n );\n }\n\n if (newProperties) {\n const newHeaders = buildGoogleSheetHeaders(newProperties);\n // const headerLine = newHeaders.join(\",\");\n\n // first, download the existing data\n const existingData = await downloadGoogleSheetsData(spreadsheetId, accessToken);\n\n // add new header for first line, and empty value for other\n const currentLines = existingData.split(\"\\n\");\n const csvLines = currentLines.map((line, index) => {\n if (index === 0) {\n const currentHeaders = line.split(\",\");\n const allHeaders = [...currentHeaders, ...newHeaders];\n return allHeaders.join(\",\");\n } else {\n const currentValues = line.split(\",\");\n const newValues = newHeaders.map(() => \"\");\n const updatedValues = [...currentValues, ...newValues];\n return updatedValues.join(\",\");\n }\n });\n\n // upload updated data\n await uploadGoogleSheetsData(spreadsheetId, csvLines, accessToken);\n }\n } catch (error) {\n console.error(\"Error updating Google Sheets spreadsheet:\", error);\n throw error;\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"file":"handler.js","names":["record: Record<string, unknown>"],"sources":["../../../../../../src/shared/datarecords/external/google/sheets/handler.ts"],"sourcesContent":["import type { TObject, TProperties } from \"@sinclair/typebox\";\nimport getClient from \"./client\";\nimport type { GoogleSheetsOptions } from \"./types\";\n\nasync function downloadGoogleSheetsData(spreadsheetId: string, accessToken: string): Promise<string> {\n try {\n const client = getClient(accessToken);\n const response = await client.callDriveApi<string>(\n `https://www.googleapis.com/drive/v3/files/${spreadsheetId}/export?mimeType=text/csv`,\n \"GET\",\n );\n\n if (!response.success) {\n throw new Error(`Failed to download spreadsheet: ${response.status}`);\n }\n\n return response.data;\n } catch (error) {\n console.error(\"Error downloading Google Sheets data:\", error);\n throw error;\n }\n}\n\nasync function uploadGoogleSheetsData(\n spreadsheetId: string,\n csvLines: string[],\n accessToken: string,\n): Promise<boolean> {\n try {\n const client = getClient(accessToken);\n // Use resumable upload to ensure the content is properly converted\n const initResponse = await client.callDriveApi<string>(\n `https://www.googleapis.com/upload/drive/v3/files/${spreadsheetId}?uploadType=resumable`,\n \"PATCH\",\n {\n mimeType: \"application/vnd.google-apps.spreadsheet\",\n },\n );\n\n if (!initResponse.success) {\n const errorText = initResponse.data;\n throw new Error(`Failed to initiate upload: ${initResponse.status} - ${errorText}`);\n }\n\n const uploadUrl = initResponse.headers.get(\"Location\");\n\n if (!uploadUrl) {\n throw new Error(\"No upload URL returned from Google Drive\");\n }\n\n // Upload the CSV content\n const uploadResponse = await fetch(uploadUrl, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"text/csv\",\n },\n body: csvLines.map((line) => line.replace(\"\\r\", \"\")).join(\"\\n\"),\n });\n return uploadResponse.ok;\n } catch (error) {\n console.error(\"Error uploading Google Sheets data:\", error);\n throw error;\n }\n}\n\nexport async function saveRecord({\n formData,\n options,\n properties,\n accessToken,\n}: {\n formData: FormData;\n options: GoogleSheetsOptions;\n properties: TProperties;\n accessToken: string;\n}): Promise<boolean> {\n try {\n if (!accessToken) {\n throw new Error(\"Access token is required\");\n }\n\n if (!options.spreadsheetId) {\n throw new Error(\"Spreadsheet ID is required\");\n }\n\n // Download existing CSV data\n const existingCsv = await downloadGoogleSheetsData(options.spreadsheetId, accessToken);\n const csvLines = existingCsv.trim().split(\"\\n\");\n\n // Convert FormData to a record object\n const record: Record<string, unknown> = {};\n for (const [key, value] of formData.entries()) {\n record[key] = value;\n }\n\n // build new csv line using the metadata.order of properties\n const orderedHeaders = buildGoogleSheetHeaders(properties);\n const newCsvRow = orderedHeaders\n .map((header) => {\n const value = record[header]?.toString() || \"\";\n // Escape CSV values that contain commas, quotes, or newlines\n if (value.includes(\",\") || value.includes('\"') || value.includes(\"\\n\")) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`;\n }\n return value;\n })\n .join(\",\");\n\n // Add new rows to CSV\n csvLines.push(newCsvRow);\n\n return uploadGoogleSheetsData(options.spreadsheetId, csvLines, accessToken);\n } catch (error) {\n console.error(\"Error pushing data to Google Sheets:\", error);\n return false;\n }\n}\n\n/**\n * Create a spreadsheet in Google Sheets\n * @param title\n * @param schema\n * @param accessToken\n * @returns\n */\nexport async function createTable({\n name,\n schema,\n accessToken,\n}: {\n name: string;\n schema: TObject;\n accessToken: string;\n}): Promise<{ spreadsheetId: string; spreadsheetUrl: string }> {\n try {\n const client = getClient(accessToken);\n\n // First create the file\n const createResponse = await client.callDriveApi<{ id: string }>(\n \"https://www.googleapis.com/drive/v3/files\",\n \"POST\",\n {\n name: name,\n mimeType: \"application/vnd.google-apps.spreadsheet\",\n },\n );\n\n if (!createResponse.success) {\n throw new Error(`Failed to create spreadsheet: ${createResponse.status}`);\n }\n\n const spreadsheetId = createResponse.data.id;\n\n const spreadsheetUrl = `https://docs.google.com/spreadsheets/d/${spreadsheetId}/edit`;\n\n const headers = buildGoogleSheetHeaders(schema.properties as TProperties);\n const headerLine = headers.join(\",\");\n\n await uploadGoogleSheetsData(spreadsheetId, [headerLine], accessToken);\n return {\n spreadsheetId,\n spreadsheetUrl,\n };\n } catch (error) {\n console.error(\"Error creating Google Sheets spreadsheet:\", error);\n throw error;\n }\n}\n\nfunction buildGoogleSheetHeaders(properties: TProperties) {\n // Sort fields by metadata.order (ascending), then fields without order\n const sortedEntries = Object.entries(properties).sort(([, fieldA], [, fieldB]) => {\n const orderA = fieldA.metadata?.order;\n const orderB = fieldB.metadata?.order;\n\n // If both have order, sort by order value\n if (orderA !== undefined && orderB !== undefined) {\n return orderA - orderB;\n }\n\n // Fields with order come first\n if (orderA !== undefined && orderB === undefined) {\n return -1;\n }\n\n if (orderA === undefined && orderB !== undefined) {\n return 1;\n }\n\n // Both without order, maintain original order\n return 0;\n });\n\n const fields = sortedEntries.map(([fieldName, field]) => {\n return fieldName;\n });\n return fields;\n}\n\nexport async function updateTable({\n spreadsheetId,\n newName,\n newProperties,\n accessToken,\n}: {\n spreadsheetId: string;\n newName?: string;\n newProperties?: TProperties;\n accessToken: string;\n}): Promise<void> {\n try {\n // rename spreadsheet\n if (newName) {\n const client = getClient(accessToken);\n await client.callDriveApi<string>(\n `https://www.googleapis.com/drive/v3/files/${spreadsheetId}`,\n \"PATCH\",\n {\n name: newName,\n },\n );\n }\n\n if (newProperties) {\n const newHeaders = buildGoogleSheetHeaders(newProperties);\n // const headerLine = newHeaders.join(\",\");\n\n // first, download the existing data\n const existingData = await downloadGoogleSheetsData(spreadsheetId, accessToken);\n\n // add new header for first line, and empty value for other\n const currentLines = existingData.split(\"\\n\");\n const csvLines = currentLines.map((line, index) => {\n if (index === 0) {\n const currentHeaders = line.split(\",\");\n const allHeaders = [...currentHeaders, ...newHeaders];\n return allHeaders.join(\",\");\n } else {\n const currentValues = line.split(\",\");\n const newValues = newHeaders.map(() => \"\");\n const updatedValues = [...currentValues, ...newValues];\n return updatedValues.join(\",\");\n }\n });\n\n // upload updated data\n await uploadGoogleSheetsData(spreadsheetId, csvLines, accessToken);\n }\n } catch (error) {\n console.error(\"Error updating Google Sheets spreadsheet:\", error);\n throw error;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import * as _sinclair_typebox7623 from "@sinclair/typebox";
|
|
2
|
+
import { Static } from "@sinclair/typebox";
|
|
3
|
+
|
|
4
|
+
//#region src/shared/datarecords/external/google/sheets/types.d.ts
|
|
5
|
+
declare const googleSheetsOptions: _sinclair_typebox7623.TObject<{
|
|
6
|
+
spreadsheetId: _sinclair_typebox7623.TString;
|
|
7
|
+
spreadsheetUrl: _sinclair_typebox7623.TOptional<_sinclair_typebox7623.TString>;
|
|
8
|
+
spreadsheetName: _sinclair_typebox7623.TOptional<_sinclair_typebox7623.TString>;
|
|
9
|
+
externalUrl: _sinclair_typebox7623.TOptional<_sinclair_typebox7623.TString>;
|
|
7
10
|
}>;
|
|
8
|
-
|
|
11
|
+
type GoogleSheetsOptions = Static<typeof googleSheetsOptions>;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { GoogleSheetsOptions, googleSheetsOptions };
|
|
9
14
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../../../../src/shared/datarecords/external/google/sheets/types.ts"],"sourcesContent":[],"mappings":";;;;cAEa,2CAAmB;iBAK9B,qBAAA,CAAA;;EALW,eAAA,iCAKX,+BAAA;EAAA,WAAA,iCAAA,+BAAA;;KAEU,mBAAA,GAAsB,cAAc"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
3
|
+
//#region src/shared/datarecords/external/google/sheets/types.ts
|
|
4
|
+
const googleSheetsOptions = Type.Object({
|
|
5
|
+
spreadsheetId: Type.String(),
|
|
6
|
+
spreadsheetUrl: Type.Optional(Type.String()),
|
|
7
|
+
spreadsheetName: Type.Optional(Type.String()),
|
|
8
|
+
externalUrl: Type.Optional(Type.String())
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
export { googleSheetsOptions };
|
|
10
13
|
//# sourceMappingURL=types.js.map
|