@fastpix/fastpix-node 2.0.4 → 2.0.6
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/FUNCTIONS.md +1 -1
- package/README.md +11 -11
- package/dist/commonjs/funcs/aiFeaturesGenerateNamedEntities.d.ts +2 -2
- package/dist/commonjs/funcs/aiFeaturesGenerateNamedEntities.js +2 -2
- package/dist/commonjs/funcs/aiFeaturesUpdateSummary.d.ts +2 -2
- package/dist/commonjs/funcs/aiFeaturesUpdateSummary.js +2 -2
- package/dist/commonjs/funcs/dimensionsList.d.ts +2 -2
- package/dist/commonjs/funcs/dimensionsList.js +2 -2
- package/dist/commonjs/funcs/dimensionsListFilterValues.d.ts +2 -2
- package/dist/commonjs/funcs/dimensionsListFilterValues.js +2 -2
- package/dist/commonjs/funcs/drmConfigurationsGet.d.ts +1 -1
- package/dist/commonjs/funcs/drmConfigurationsGet.js +1 -1
- package/dist/commonjs/funcs/drmConfigurationsList.d.ts +1 -1
- package/dist/commonjs/funcs/drmConfigurationsList.js +1 -1
- package/dist/commonjs/funcs/errorsList.d.ts +1 -1
- package/dist/commonjs/funcs/errorsList.js +1 -1
- package/dist/commonjs/funcs/inVideoAIUpdateModeration.d.ts +2 -2
- package/dist/commonjs/funcs/inVideoAIUpdateModeration.js +2 -2
- package/dist/commonjs/funcs/inVideoAIfeaturesGenerateChapters.d.ts +2 -2
- package/dist/commonjs/funcs/inVideoAIfeaturesGenerateChapters.js +2 -2
- package/dist/commonjs/funcs/inputVideoCreate.d.ts +4 -4
- package/dist/commonjs/funcs/inputVideoCreate.js +4 -4
- package/dist/commonjs/funcs/inputVideoUpload.d.ts +5 -5
- package/dist/commonjs/funcs/inputVideoUpload.js +5 -5
- package/dist/commonjs/funcs/liveStreamsCreate.d.ts +3 -3
- package/dist/commonjs/funcs/liveStreamsCreate.js +3 -3
- package/dist/commonjs/funcs/liveStreamsDelete.d.ts +2 -2
- package/dist/commonjs/funcs/liveStreamsDelete.js +2 -2
- package/dist/commonjs/funcs/liveStreamsEnable.d.ts +1 -1
- package/dist/commonjs/funcs/liveStreamsEnable.js +1 -1
- package/dist/commonjs/funcs/liveStreamsListClips.d.ts +1 -1
- package/dist/commonjs/funcs/liveStreamsListClips.js +1 -1
- package/dist/commonjs/funcs/manageLiveStreamComplete.d.ts +1 -1
- package/dist/commonjs/funcs/manageLiveStreamComplete.js +1 -1
- package/dist/commonjs/funcs/manageLiveStreamDisable.d.ts +1 -1
- package/dist/commonjs/funcs/manageLiveStreamDisable.js +1 -1
- package/dist/commonjs/funcs/manageLiveStreamGet.d.ts +1 -1
- package/dist/commonjs/funcs/manageLiveStreamGet.js +1 -1
- package/dist/commonjs/funcs/manageLiveStreamGetViewerCount.d.ts +1 -1
- package/dist/commonjs/funcs/manageLiveStreamGetViewerCount.js +1 -1
- package/dist/commonjs/funcs/manageLiveStreamUpdate.d.ts +2 -2
- package/dist/commonjs/funcs/manageLiveStreamUpdate.js +2 -2
- package/dist/commonjs/funcs/manageVideosAddTrack.d.ts +5 -5
- package/dist/commonjs/funcs/manageVideosAddTrack.js +5 -5
- package/dist/commonjs/funcs/manageVideosCancelUpload.d.ts +1 -1
- package/dist/commonjs/funcs/manageVideosCancelUpload.js +1 -1
- package/dist/commonjs/funcs/manageVideosDelete.d.ts +1 -1
- package/dist/commonjs/funcs/manageVideosDelete.js +1 -1
- package/dist/commonjs/funcs/manageVideosGenerateSubtitleTrack.d.ts +3 -3
- package/dist/commonjs/funcs/manageVideosGenerateSubtitleTrack.js +3 -3
- package/dist/commonjs/funcs/manageVideosGet.d.ts +1 -1
- package/dist/commonjs/funcs/manageVideosGet.js +1 -1
- package/dist/commonjs/funcs/manageVideosUpdate.d.ts +1 -1
- package/dist/commonjs/funcs/manageVideosUpdate.js +1 -1
- package/dist/commonjs/funcs/manageVideosUpdateMp4Support.d.ts +3 -3
- package/dist/commonjs/funcs/manageVideosUpdateMp4Support.js +3 -3
- package/dist/commonjs/funcs/manageVideosUpdateTrack.d.ts +4 -4
- package/dist/commonjs/funcs/manageVideosUpdateTrack.js +4 -4
- package/dist/commonjs/funcs/mediaDeleteTrack.d.ts +2 -2
- package/dist/commonjs/funcs/mediaDeleteTrack.js +2 -2
- package/dist/commonjs/funcs/mediaGetClips.d.ts +1 -1
- package/dist/commonjs/funcs/mediaGetClips.js +1 -1
- package/dist/commonjs/funcs/mediaUpdateSourceAccess.d.ts +1 -1
- package/dist/commonjs/funcs/mediaUpdateSourceAccess.js +1 -1
- package/dist/commonjs/funcs/metricsListBreakdownValues.d.ts +2 -2
- package/dist/commonjs/funcs/metricsListBreakdownValues.js +2 -2
- package/dist/commonjs/funcs/metricsListCompares.d.ts +2 -2
- package/dist/commonjs/funcs/metricsListCompares.js +2 -2
- package/dist/commonjs/funcs/metricsListOverallValues.d.ts +2 -2
- package/dist/commonjs/funcs/metricsListOverallValues.js +2 -2
- package/dist/commonjs/funcs/playbackCreate.d.ts +1 -1
- package/dist/commonjs/funcs/playbackCreate.js +1 -1
- package/dist/commonjs/funcs/playlistCreate.d.ts +1 -1
- package/dist/commonjs/funcs/playlistCreate.js +1 -1
- package/dist/commonjs/funcs/signingKeysCreate.d.ts +1 -1
- package/dist/commonjs/funcs/signingKeysCreate.js +1 -1
- package/dist/commonjs/funcs/signingKeysGetById.d.ts +2 -2
- package/dist/commonjs/funcs/signingKeysGetById.js +2 -2
- package/dist/commonjs/funcs/simulcastStreamsDelete.d.ts +1 -1
- package/dist/commonjs/funcs/simulcastStreamsDelete.js +1 -1
- package/dist/commonjs/funcs/simulcastsCreate.d.ts +2 -2
- package/dist/commonjs/funcs/simulcastsCreate.js +2 -2
- package/dist/commonjs/funcs/simulcastsUpdate.d.ts +1 -1
- package/dist/commonjs/funcs/simulcastsUpdate.js +1 -1
- package/dist/commonjs/funcs/viewsGetDetails.d.ts +1 -1
- package/dist/commonjs/funcs/viewsGetDetails.js +1 -1
- package/dist/commonjs/funcs/viewsList.d.ts +3 -3
- package/dist/commonjs/funcs/viewsList.js +3 -3
- package/dist/commonjs/funcs/viewsListTopContent.d.ts +1 -1
- package/dist/commonjs/funcs/viewsListTopContent.js +1 -1
- package/dist/commonjs/hooks/eventsFieldRemapHook.d.ts +5 -0
- package/dist/commonjs/hooks/eventsFieldRemapHook.d.ts.map +1 -0
- package/dist/commonjs/hooks/eventsFieldRemapHook.js +84 -0
- package/dist/commonjs/hooks/eventsFieldRemapHook.js.map +1 -0
- package/dist/commonjs/hooks/registration.d.ts.map +1 -1
- package/dist/commonjs/hooks/registration.js +2 -4
- package/dist/commonjs/hooks/registration.js.map +1 -1
- package/dist/commonjs/lib/config.d.ts +3 -3
- package/dist/commonjs/lib/config.d.ts.map +1 -1
- package/dist/commonjs/lib/config.js +3 -3
- package/dist/commonjs/lib/config.js.map +1 -1
- package/dist/commonjs/models/addtrackrequest.js +1 -1
- package/dist/commonjs/models/addtrackrequest.js.map +1 -1
- package/dist/commonjs/models/createmediarequest.d.ts +1 -1
- package/dist/commonjs/models/deletesigningkeyresponse.d.ts +10 -0
- package/dist/commonjs/models/deletesigningkeyresponse.d.ts.map +1 -1
- package/dist/commonjs/models/deletesigningkeyresponse.js +1 -0
- package/dist/commonjs/models/deletesigningkeyresponse.js.map +1 -1
- package/dist/commonjs/models/operations/directuploadvideomedia.d.ts +2 -2
- package/dist/commonjs/models/pullvideoinput.js +1 -1
- package/dist/commonjs/models/pullvideoinput.js.map +1 -1
- package/dist/commonjs/models/videotrackforgetall.d.ts +4 -0
- package/dist/commonjs/models/videotrackforgetall.d.ts.map +1 -1
- package/dist/commonjs/models/videotrackforgetall.js +1 -0
- package/dist/commonjs/models/videotrackforgetall.js.map +1 -1
- package/dist/commonjs/models/views.d.ts +3 -3
- package/dist/commonjs/models/views.d.ts.map +1 -1
- package/dist/commonjs/models/views.js +4 -9
- package/dist/commonjs/models/views.js.map +1 -1
- package/dist/commonjs/models/viewslist.d.ts +7 -1
- package/dist/commonjs/models/viewslist.d.ts.map +1 -1
- package/dist/commonjs/models/viewslist.js +3 -7
- package/dist/commonjs/models/viewslist.js.map +1 -1
- package/dist/commonjs/models/watermarkinput.d.ts +1 -1
- package/dist/commonjs/sdk/aifeatures.d.ts +4 -4
- package/dist/commonjs/sdk/aifeatures.js +4 -4
- package/dist/commonjs/sdk/dimensions.d.ts +4 -4
- package/dist/commonjs/sdk/dimensions.js +4 -4
- package/dist/commonjs/sdk/drmconfigurations.d.ts +2 -2
- package/dist/commonjs/sdk/drmconfigurations.js +2 -2
- package/dist/commonjs/sdk/errors.d.ts +1 -1
- package/dist/commonjs/sdk/errors.js +1 -1
- package/dist/commonjs/sdk/inputvideo.d.ts +9 -9
- package/dist/commonjs/sdk/inputvideo.js +9 -9
- package/dist/commonjs/sdk/invideoai.d.ts +2 -2
- package/dist/commonjs/sdk/invideoai.js +2 -2
- package/dist/commonjs/sdk/invideoaifeatures.d.ts +2 -2
- package/dist/commonjs/sdk/invideoaifeatures.js +2 -2
- package/dist/commonjs/sdk/livestreams.d.ts +7 -7
- package/dist/commonjs/sdk/livestreams.js +7 -7
- package/dist/commonjs/sdk/managelivestream.d.ts +6 -6
- package/dist/commonjs/sdk/managelivestream.js +6 -6
- package/dist/commonjs/sdk/managevideos.d.ts +19 -19
- package/dist/commonjs/sdk/managevideos.js +19 -19
- package/dist/commonjs/sdk/media.d.ts +4 -4
- package/dist/commonjs/sdk/media.js +4 -4
- package/dist/commonjs/sdk/metrics.d.ts +6 -6
- package/dist/commonjs/sdk/metrics.js +6 -6
- package/dist/commonjs/sdk/playback.d.ts +1 -1
- package/dist/commonjs/sdk/playback.js +1 -1
- package/dist/commonjs/sdk/playlist.d.ts +1 -1
- package/dist/commonjs/sdk/playlist.js +1 -1
- package/dist/commonjs/sdk/signingkeys.d.ts +3 -3
- package/dist/commonjs/sdk/signingkeys.js +3 -3
- package/dist/commonjs/sdk/simulcasts.d.ts +3 -3
- package/dist/commonjs/sdk/simulcasts.js +3 -3
- package/dist/commonjs/sdk/simulcaststreams.d.ts +1 -1
- package/dist/commonjs/sdk/simulcaststreams.js +1 -1
- package/dist/commonjs/sdk/views.d.ts +5 -5
- package/dist/commonjs/sdk/views.js +5 -5
- package/dist/esm/funcs/aiFeaturesGenerateNamedEntities.d.ts +2 -2
- package/dist/esm/funcs/aiFeaturesGenerateNamedEntities.js +2 -2
- package/dist/esm/funcs/aiFeaturesUpdateSummary.d.ts +2 -2
- package/dist/esm/funcs/aiFeaturesUpdateSummary.js +2 -2
- package/dist/esm/funcs/dimensionsList.d.ts +2 -2
- package/dist/esm/funcs/dimensionsList.js +2 -2
- package/dist/esm/funcs/dimensionsListFilterValues.d.ts +2 -2
- package/dist/esm/funcs/dimensionsListFilterValues.js +2 -2
- package/dist/esm/funcs/drmConfigurationsGet.d.ts +1 -1
- package/dist/esm/funcs/drmConfigurationsGet.js +1 -1
- package/dist/esm/funcs/drmConfigurationsList.d.ts +1 -1
- package/dist/esm/funcs/drmConfigurationsList.js +1 -1
- package/dist/esm/funcs/errorsList.d.ts +1 -1
- package/dist/esm/funcs/errorsList.js +1 -1
- package/dist/esm/funcs/inVideoAIUpdateModeration.d.ts +2 -2
- package/dist/esm/funcs/inVideoAIUpdateModeration.js +2 -2
- package/dist/esm/funcs/inVideoAIfeaturesGenerateChapters.d.ts +2 -2
- package/dist/esm/funcs/inVideoAIfeaturesGenerateChapters.js +2 -2
- package/dist/esm/funcs/inputVideoCreate.d.ts +4 -4
- package/dist/esm/funcs/inputVideoCreate.js +4 -4
- package/dist/esm/funcs/inputVideoUpload.d.ts +5 -5
- package/dist/esm/funcs/inputVideoUpload.js +5 -5
- package/dist/esm/funcs/liveStreamsCreate.d.ts +3 -3
- package/dist/esm/funcs/liveStreamsCreate.js +3 -3
- package/dist/esm/funcs/liveStreamsDelete.d.ts +2 -2
- package/dist/esm/funcs/liveStreamsDelete.js +2 -2
- package/dist/esm/funcs/liveStreamsEnable.d.ts +1 -1
- package/dist/esm/funcs/liveStreamsEnable.js +1 -1
- package/dist/esm/funcs/liveStreamsListClips.d.ts +1 -1
- package/dist/esm/funcs/liveStreamsListClips.js +1 -1
- package/dist/esm/funcs/manageLiveStreamComplete.d.ts +1 -1
- package/dist/esm/funcs/manageLiveStreamComplete.js +1 -1
- package/dist/esm/funcs/manageLiveStreamDisable.d.ts +1 -1
- package/dist/esm/funcs/manageLiveStreamDisable.js +1 -1
- package/dist/esm/funcs/manageLiveStreamGet.d.ts +1 -1
- package/dist/esm/funcs/manageLiveStreamGet.js +1 -1
- package/dist/esm/funcs/manageLiveStreamGetViewerCount.d.ts +1 -1
- package/dist/esm/funcs/manageLiveStreamGetViewerCount.js +1 -1
- package/dist/esm/funcs/manageLiveStreamUpdate.d.ts +2 -2
- package/dist/esm/funcs/manageLiveStreamUpdate.js +2 -2
- package/dist/esm/funcs/manageVideosAddTrack.d.ts +5 -5
- package/dist/esm/funcs/manageVideosAddTrack.js +5 -5
- package/dist/esm/funcs/manageVideosCancelUpload.d.ts +1 -1
- package/dist/esm/funcs/manageVideosCancelUpload.js +1 -1
- package/dist/esm/funcs/manageVideosDelete.d.ts +1 -1
- package/dist/esm/funcs/manageVideosDelete.js +1 -1
- package/dist/esm/funcs/manageVideosGenerateSubtitleTrack.d.ts +3 -3
- package/dist/esm/funcs/manageVideosGenerateSubtitleTrack.js +3 -3
- package/dist/esm/funcs/manageVideosGet.d.ts +1 -1
- package/dist/esm/funcs/manageVideosGet.js +1 -1
- package/dist/esm/funcs/manageVideosUpdate.d.ts +1 -1
- package/dist/esm/funcs/manageVideosUpdate.js +1 -1
- package/dist/esm/funcs/manageVideosUpdateMp4Support.d.ts +3 -3
- package/dist/esm/funcs/manageVideosUpdateMp4Support.js +3 -3
- package/dist/esm/funcs/manageVideosUpdateTrack.d.ts +4 -4
- package/dist/esm/funcs/manageVideosUpdateTrack.js +4 -4
- package/dist/esm/funcs/mediaDeleteTrack.d.ts +2 -2
- package/dist/esm/funcs/mediaDeleteTrack.js +2 -2
- package/dist/esm/funcs/mediaGetClips.d.ts +1 -1
- package/dist/esm/funcs/mediaGetClips.js +1 -1
- package/dist/esm/funcs/mediaUpdateSourceAccess.d.ts +1 -1
- package/dist/esm/funcs/mediaUpdateSourceAccess.js +1 -1
- package/dist/esm/funcs/metricsListBreakdownValues.d.ts +2 -2
- package/dist/esm/funcs/metricsListBreakdownValues.js +2 -2
- package/dist/esm/funcs/metricsListCompares.d.ts +2 -2
- package/dist/esm/funcs/metricsListCompares.js +2 -2
- package/dist/esm/funcs/metricsListOverallValues.d.ts +2 -2
- package/dist/esm/funcs/metricsListOverallValues.js +2 -2
- package/dist/esm/funcs/playbackCreate.d.ts +1 -1
- package/dist/esm/funcs/playbackCreate.js +1 -1
- package/dist/esm/funcs/playlistCreate.d.ts +1 -1
- package/dist/esm/funcs/playlistCreate.js +1 -1
- package/dist/esm/funcs/signingKeysCreate.d.ts +1 -1
- package/dist/esm/funcs/signingKeysCreate.js +1 -1
- package/dist/esm/funcs/signingKeysGetById.d.ts +2 -2
- package/dist/esm/funcs/signingKeysGetById.js +2 -2
- package/dist/esm/funcs/simulcastStreamsDelete.d.ts +1 -1
- package/dist/esm/funcs/simulcastStreamsDelete.js +1 -1
- package/dist/esm/funcs/simulcastsCreate.d.ts +2 -2
- package/dist/esm/funcs/simulcastsCreate.js +2 -2
- package/dist/esm/funcs/simulcastsUpdate.d.ts +1 -1
- package/dist/esm/funcs/simulcastsUpdate.js +1 -1
- package/dist/esm/funcs/viewsGetDetails.d.ts +1 -1
- package/dist/esm/funcs/viewsGetDetails.js +1 -1
- package/dist/esm/funcs/viewsList.d.ts +3 -3
- package/dist/esm/funcs/viewsList.js +3 -3
- package/dist/esm/funcs/viewsListTopContent.d.ts +1 -1
- package/dist/esm/funcs/viewsListTopContent.js +1 -1
- package/dist/esm/hooks/eventsFieldRemapHook.d.ts +5 -0
- package/dist/esm/hooks/eventsFieldRemapHook.d.ts.map +1 -0
- package/dist/esm/hooks/eventsFieldRemapHook.js +80 -0
- package/dist/esm/hooks/eventsFieldRemapHook.js.map +1 -0
- package/dist/esm/hooks/registration.d.ts.map +1 -1
- package/dist/esm/hooks/registration.js +2 -4
- package/dist/esm/hooks/registration.js.map +1 -1
- package/dist/esm/lib/config.d.ts +3 -3
- package/dist/esm/lib/config.d.ts.map +1 -1
- package/dist/esm/lib/config.js +3 -3
- package/dist/esm/lib/config.js.map +1 -1
- package/dist/esm/models/addtrackrequest.js +1 -1
- package/dist/esm/models/addtrackrequest.js.map +1 -1
- package/dist/esm/models/createmediarequest.d.ts +1 -1
- package/dist/esm/models/deletesigningkeyresponse.d.ts +10 -0
- package/dist/esm/models/deletesigningkeyresponse.d.ts.map +1 -1
- package/dist/esm/models/deletesigningkeyresponse.js +1 -0
- package/dist/esm/models/deletesigningkeyresponse.js.map +1 -1
- package/dist/esm/models/operations/directuploadvideomedia.d.ts +2 -2
- package/dist/esm/models/pullvideoinput.js +1 -1
- package/dist/esm/models/pullvideoinput.js.map +1 -1
- package/dist/esm/models/videotrackforgetall.d.ts +4 -0
- package/dist/esm/models/videotrackforgetall.d.ts.map +1 -1
- package/dist/esm/models/videotrackforgetall.js +1 -0
- package/dist/esm/models/videotrackforgetall.js.map +1 -1
- package/dist/esm/models/views.d.ts +3 -3
- package/dist/esm/models/views.d.ts.map +1 -1
- package/dist/esm/models/views.js +4 -9
- package/dist/esm/models/views.js.map +1 -1
- package/dist/esm/models/viewslist.d.ts +7 -1
- package/dist/esm/models/viewslist.d.ts.map +1 -1
- package/dist/esm/models/viewslist.js +3 -7
- package/dist/esm/models/viewslist.js.map +1 -1
- package/dist/esm/models/watermarkinput.d.ts +1 -1
- package/dist/esm/sdk/aifeatures.d.ts +4 -4
- package/dist/esm/sdk/aifeatures.js +4 -4
- package/dist/esm/sdk/dimensions.d.ts +4 -4
- package/dist/esm/sdk/dimensions.js +4 -4
- package/dist/esm/sdk/drmconfigurations.d.ts +2 -2
- package/dist/esm/sdk/drmconfigurations.js +2 -2
- package/dist/esm/sdk/errors.d.ts +1 -1
- package/dist/esm/sdk/errors.js +1 -1
- package/dist/esm/sdk/inputvideo.d.ts +9 -9
- package/dist/esm/sdk/inputvideo.js +9 -9
- package/dist/esm/sdk/invideoai.d.ts +2 -2
- package/dist/esm/sdk/invideoai.js +2 -2
- package/dist/esm/sdk/invideoaifeatures.d.ts +2 -2
- package/dist/esm/sdk/invideoaifeatures.js +2 -2
- package/dist/esm/sdk/livestreams.d.ts +7 -7
- package/dist/esm/sdk/livestreams.js +7 -7
- package/dist/esm/sdk/managelivestream.d.ts +6 -6
- package/dist/esm/sdk/managelivestream.js +6 -6
- package/dist/esm/sdk/managevideos.d.ts +19 -19
- package/dist/esm/sdk/managevideos.js +19 -19
- package/dist/esm/sdk/media.d.ts +4 -4
- package/dist/esm/sdk/media.js +4 -4
- package/dist/esm/sdk/metrics.d.ts +6 -6
- package/dist/esm/sdk/metrics.js +6 -6
- package/dist/esm/sdk/playback.d.ts +1 -1
- package/dist/esm/sdk/playback.js +1 -1
- package/dist/esm/sdk/playlist.d.ts +1 -1
- package/dist/esm/sdk/playlist.js +1 -1
- package/dist/esm/sdk/signingkeys.d.ts +3 -3
- package/dist/esm/sdk/signingkeys.js +3 -3
- package/dist/esm/sdk/simulcasts.d.ts +3 -3
- package/dist/esm/sdk/simulcasts.js +3 -3
- package/dist/esm/sdk/simulcaststreams.d.ts +1 -1
- package/dist/esm/sdk/simulcaststreams.js +1 -1
- package/dist/esm/sdk/views.d.ts +5 -5
- package/dist/esm/sdk/views.js +5 -5
- package/examples/inputVideoCreate.example.ts +1 -1
- package/examples/package-lock.json +1 -1
- package/jsr.json +1 -1
- package/package.json +10 -4
- package/src/funcs/aiFeaturesGenerateNamedEntities.ts +2 -2
- package/src/funcs/aiFeaturesUpdateSummary.ts +2 -2
- package/src/funcs/dimensionsList.ts +2 -2
- package/src/funcs/dimensionsListFilterValues.ts +2 -2
- package/src/funcs/drmConfigurationsGet.ts +1 -1
- package/src/funcs/drmConfigurationsList.ts +1 -1
- package/src/funcs/errorsList.ts +1 -1
- package/src/funcs/inVideoAIUpdateModeration.ts +2 -2
- package/src/funcs/inVideoAIfeaturesGenerateChapters.ts +2 -2
- package/src/funcs/inputVideoCreate.ts +4 -4
- package/src/funcs/inputVideoUpload.ts +5 -5
- package/src/funcs/liveStreamsCreate.ts +3 -3
- package/src/funcs/liveStreamsDelete.ts +2 -2
- package/src/funcs/liveStreamsEnable.ts +1 -1
- package/src/funcs/liveStreamsListClips.ts +1 -1
- package/src/funcs/manageLiveStreamComplete.ts +1 -1
- package/src/funcs/manageLiveStreamDisable.ts +1 -1
- package/src/funcs/manageLiveStreamGet.ts +1 -1
- package/src/funcs/manageLiveStreamGetViewerCount.ts +1 -1
- package/src/funcs/manageLiveStreamUpdate.ts +2 -2
- package/src/funcs/manageVideosAddTrack.ts +5 -5
- package/src/funcs/manageVideosCancelUpload.ts +1 -1
- package/src/funcs/manageVideosDelete.ts +1 -1
- package/src/funcs/manageVideosGenerateSubtitleTrack.ts +3 -3
- package/src/funcs/manageVideosGet.ts +1 -1
- package/src/funcs/manageVideosUpdate.ts +1 -1
- package/src/funcs/manageVideosUpdateMp4Support.ts +3 -3
- package/src/funcs/manageVideosUpdateTrack.ts +4 -4
- package/src/funcs/mediaDeleteTrack.ts +2 -2
- package/src/funcs/mediaGetClips.ts +1 -1
- package/src/funcs/mediaUpdateSourceAccess.ts +1 -1
- package/src/funcs/metricsListBreakdownValues.ts +2 -2
- package/src/funcs/metricsListCompares.ts +2 -2
- package/src/funcs/metricsListOverallValues.ts +2 -2
- package/src/funcs/playbackCreate.ts +1 -1
- package/src/funcs/playlistCreate.ts +1 -1
- package/src/funcs/signingKeysCreate.ts +1 -1
- package/src/funcs/signingKeysGetById.ts +2 -2
- package/src/funcs/simulcastStreamsDelete.ts +1 -1
- package/src/funcs/simulcastsCreate.ts +2 -2
- package/src/funcs/simulcastsUpdate.ts +1 -1
- package/src/funcs/viewsGetDetails.ts +1 -1
- package/src/funcs/viewsList.ts +3 -3
- package/src/funcs/viewsListTopContent.ts +1 -1
- package/src/hooks/eventsFieldRemapHook.ts +94 -0
- package/src/hooks/registration.ts +2 -4
- package/src/lib/config.ts +3 -3
- package/src/models/addtrackrequest.ts +1 -1
- package/src/models/createmediarequest.ts +1 -1
- package/src/models/deletesigningkeyresponse.ts +14 -0
- package/src/models/operations/directuploadvideomedia.ts +2 -2
- package/src/models/pullvideoinput.ts +1 -1
- package/src/models/videotrackforgetall.ts +5 -0
- package/src/models/views.ts +7 -19
- package/src/models/viewslist.ts +21 -22
- package/src/models/watermarkinput.ts +1 -1
- package/src/sdk/aifeatures.ts +4 -4
- package/src/sdk/dimensions.ts +4 -4
- package/src/sdk/drmconfigurations.ts +2 -2
- package/src/sdk/errors.ts +1 -1
- package/src/sdk/inputvideo.ts +9 -9
- package/src/sdk/invideoai.ts +2 -2
- package/src/sdk/invideoaifeatures.ts +2 -2
- package/src/sdk/livestreams.ts +7 -7
- package/src/sdk/managelivestream.ts +6 -6
- package/src/sdk/managevideos.ts +19 -19
- package/src/sdk/media.ts +4 -4
- package/src/sdk/metrics.ts +6 -6
- package/src/sdk/playback.ts +1 -1
- package/src/sdk/playlist.ts +1 -1
- package/src/sdk/signingkeys.ts +3 -3
- package/src/sdk/simulcasts.ts +3 -3
- package/src/sdk/simulcaststreams.ts +1 -1
- package/src/sdk/views.ts +5 -5
- package/tests/artifacts/get-all-playlists.api.json +26 -0
- package/tests/artifacts/get-all-playlists.sdk.json +26 -0
- package/tests/artifacts/get-all-streams.api.json +76 -0
- package/tests/artifacts/get-all-streams.sdk.json +76 -0
- package/tests/artifacts/get-live-stream-by-id.api.json +43 -0
- package/tests/artifacts/get-live-stream-by-id.sdk.json +43 -0
- package/tests/artifacts/get-live-stream-playback-id.api.json +7 -0
- package/tests/artifacts/get-live-stream-playback-id.sdk.json +7 -0
- package/tests/artifacts/get-live-stream-viewer-count-by-id.api.json +6 -0
- package/tests/artifacts/get-live-stream-viewer-count-by-id.sdk.json +6 -0
- package/tests/artifacts/get-media-clips.api.json +9 -0
- package/tests/artifacts/get-media-clips.sdk.json +9 -0
- package/tests/artifacts/get-media-summary.api.json +8 -0
- package/tests/artifacts/get-media-summary.sdk.json +26 -0
- package/tests/artifacts/get-media.api.json +57 -0
- package/tests/artifacts/get-media.sdk.json +57 -0
- package/tests/artifacts/get-playback-id.api.json +19 -0
- package/tests/artifacts/get-playback-id.sdk.json +19 -0
- package/tests/artifacts/get-playlist-by-id.api.json +15 -0
- package/tests/artifacts/get-playlist-by-id.sdk.json +15 -0
- package/tests/artifacts/get-signing_key_by_id.api.json +8 -0
- package/tests/artifacts/get-signing_key_by_id.sdk.json +8 -0
- package/tests/artifacts/get-specific-simulcast-of-stream.api.json +12 -0
- package/tests/artifacts/get-specific-simulcast-of-stream.sdk.json +12 -0
- package/tests/artifacts/getDrmConfiguration.api.json +8 -0
- package/tests/artifacts/getDrmConfiguration.sdk.json +26 -0
- package/tests/artifacts/getDrmConfigurationById.api.json +13 -0
- package/tests/artifacts/getDrmConfigurationById.sdk.json +31 -0
- package/tests/artifacts/get_timeseries_data.api.json +18 -0
- package/tests/artifacts/get_timeseries_data.sdk.json +18 -0
- package/tests/artifacts/get_video_view_details.api.json +213 -0
- package/tests/artifacts/get_video_view_details.sdk.json +213 -0
- package/tests/artifacts/list-live-clips.api.json +9 -0
- package/tests/artifacts/list-live-clips.sdk.json +9 -0
- package/tests/artifacts/list-media.api.json +65 -0
- package/tests/artifacts/list-media.sdk.json +65 -0
- package/tests/artifacts/list-playback-ids.api.json +21 -0
- package/tests/artifacts/list-playback-ids.sdk.json +21 -0
- package/tests/artifacts/list-uploads.api.json +43 -0
- package/tests/artifacts/list-uploads.sdk.json +43 -0
- package/tests/artifacts/list_breakdown_values.api.json +24 -0
- package/tests/artifacts/list_breakdown_values.sdk.json +24 -0
- package/tests/artifacts/list_by_top_content.api.json +19 -0
- package/tests/artifacts/list_by_top_content.sdk.json +19 -0
- package/tests/artifacts/list_comparison_values.api.json +350 -0
- package/tests/artifacts/list_comparison_values.sdk.json +350 -0
- package/tests/artifacts/list_dimensions.api.json +61 -0
- package/tests/artifacts/list_dimensions.sdk.json +61 -0
- package/tests/artifacts/list_errors.api.json +51 -0
- package/tests/artifacts/list_errors.sdk.json +51 -0
- package/tests/artifacts/list_filter_values_for_dimension.api.json +14 -0
- package/tests/artifacts/list_filter_values_for_dimension.sdk.json +14 -0
- package/tests/artifacts/list_overall_values.api.json +18 -0
- package/tests/artifacts/list_overall_values.sdk.json +18 -0
- package/tests/artifacts/list_signing_keys.api.json +22 -0
- package/tests/artifacts/list_signing_keys.sdk.json +22 -0
- package/tests/artifacts/list_video_views.api.json +84 -0
- package/tests/artifacts/list_video_views.sdk.json +84 -0
- package/tests/artifacts/retrieveMediaInputInfo.api.json +28 -0
- package/tests/artifacts/retrieveMediaInputInfo.sdk.json +28 -0
- package/tests/artifacts-non-get/Add-media-track.raw.json +10 -0
- package/tests/artifacts-non-get/Add-media-track.sdk.json +10 -0
- package/tests/artifacts-non-get/Generate-subtitle-track.raw.json +9 -0
- package/tests/artifacts-non-get/Generate-subtitle-track.sdk.json +9 -0
- package/tests/artifacts-non-get/add-media-to-playlist.raw.json +24 -0
- package/tests/artifacts-non-get/add-media-to-playlist.sdk.json +24 -0
- package/tests/artifacts-non-get/cancel-upload.raw.json +15 -0
- package/tests/artifacts-non-get/cancel-upload.sdk.json +15 -0
- package/tests/artifacts-non-get/change-media-order-in-playlist.raw.json +24 -0
- package/tests/artifacts-non-get/change-media-order-in-playlist.sdk.json +24 -0
- package/tests/artifacts-non-get/complete-live-stream.raw.json +8 -0
- package/tests/artifacts-non-get/complete-live-stream.sdk.json +13 -0
- package/tests/artifacts-non-get/create-a-playlist.raw.json +15 -0
- package/tests/artifacts-non-get/create-a-playlist.sdk.json +15 -0
- package/tests/artifacts-non-get/create-media-playback-id.raw.json +20 -0
- package/tests/artifacts-non-get/create-media-playback-id.sdk.json +19 -0
- package/tests/artifacts-non-get/create-media.raw.json +41 -0
- package/tests/artifacts-non-get/create-media.sdk.json +41 -0
- package/tests/artifacts-non-get/create-new-stream.raw.json +32 -0
- package/tests/artifacts-non-get/create-new-stream.sdk.json +32 -0
- package/tests/artifacts-non-get/create-playbackId-of-stream.raw.json +7 -0
- package/tests/artifacts-non-get/create-playbackId-of-stream.sdk.json +7 -0
- package/tests/artifacts-non-get/create-simulcast-of-stream.raw.json +9 -0
- package/tests/artifacts-non-get/create-simulcast-of-stream.sdk.json +9 -0
- package/tests/artifacts-non-get/create_signing_key.raw.json +8 -0
- package/tests/artifacts-non-get/create_signing_key.sdk.json +8 -0
- package/tests/artifacts-non-get/delete-a-playlist.raw.json +3 -0
- package/tests/artifacts-non-get/delete-a-playlist.sdk.json +3 -0
- package/tests/artifacts-non-get/delete-live-stream.raw.json +3 -0
- package/tests/artifacts-non-get/delete-live-stream.sdk.json +3 -0
- package/tests/artifacts-non-get/delete-media-from-playlist.raw.json +15 -0
- package/tests/artifacts-non-get/delete-media-from-playlist.sdk.json +15 -0
- package/tests/artifacts-non-get/delete-media-playback-id.raw.json +3 -0
- package/tests/artifacts-non-get/delete-media-playback-id.sdk.json +3 -0
- package/tests/artifacts-non-get/delete-media-track.raw.json +3 -0
- package/tests/artifacts-non-get/delete-media-track.sdk.json +3 -0
- package/tests/artifacts-non-get/delete-media.raw.json +3 -0
- package/tests/artifacts-non-get/delete-media.sdk.json +3 -0
- package/tests/artifacts-non-get/delete-playbackId-of-stream.raw.json +3 -0
- package/tests/artifacts-non-get/delete-playbackId-of-stream.sdk.json +3 -0
- package/tests/artifacts-non-get/delete-simulcast-of-stream.raw.json +3 -0
- package/tests/artifacts-non-get/delete-simulcast-of-stream.sdk.json +3 -0
- package/tests/artifacts-non-get/delete_signing_key.raw.json +6 -0
- package/tests/artifacts-non-get/delete_signing_key.sdk.json +6 -0
- package/tests/artifacts-non-get/direct-upload-video-media.raw.json +36 -0
- package/tests/artifacts-non-get/direct-upload-video-media.sdk.json +36 -0
- package/tests/artifacts-non-get/disable-live-stream.raw.json +3 -0
- package/tests/artifacts-non-get/disable-live-stream.sdk.json +3 -0
- package/tests/artifacts-non-get/enable-live-stream.raw.json +3 -0
- package/tests/artifacts-non-get/enable-live-stream.sdk.json +3 -0
- package/tests/artifacts-non-get/update-a-playlist.raw.json +15 -0
- package/tests/artifacts-non-get/update-a-playlist.sdk.json +15 -0
- package/tests/artifacts-non-get/update-domain-restrictions.raw.json +10 -0
- package/tests/artifacts-non-get/update-domain-restrictions.sdk.json +10 -0
- package/tests/artifacts-non-get/update-live-stream.raw.json +36 -0
- package/tests/artifacts-non-get/update-live-stream.sdk.json +36 -0
- package/tests/artifacts-non-get/update-media-chapters.raw.json +7 -0
- package/tests/artifacts-non-get/update-media-chapters.sdk.json +7 -0
- package/tests/artifacts-non-get/update-media-moderation.raw.json +7 -0
- package/tests/artifacts-non-get/update-media-moderation.sdk.json +7 -0
- package/tests/artifacts-non-get/update-media-named-entities.raw.json +7 -0
- package/tests/artifacts-non-get/update-media-named-entities.sdk.json +7 -0
- package/tests/artifacts-non-get/update-media-summary.raw.json +7 -0
- package/tests/artifacts-non-get/update-media-summary.sdk.json +7 -0
- package/tests/artifacts-non-get/update-media-track.raw.json +10 -0
- package/tests/artifacts-non-get/update-media-track.sdk.json +10 -0
- package/tests/artifacts-non-get/update-specific-simulcast-of-stream.raw.json +9 -0
- package/tests/artifacts-non-get/update-specific-simulcast-of-stream.sdk.json +9 -0
- package/tests/artifacts-non-get/update-user-agent-restrictions.raw.json +10 -0
- package/tests/artifacts-non-get/update-user-agent-restrictions.sdk.json +10 -0
- package/tests/artifacts-non-get/updated-media.raw.json +94 -0
- package/tests/artifacts-non-get/updated-media.sdk.json +94 -0
- package/tests/artifacts-non-get/updated-mp4Support.raw.json +95 -0
- package/tests/artifacts-non-get/updated-mp4Support.sdk.json +95 -0
- package/tests/artifacts-non-get/updated-source-access.raw.json +94 -0
- package/tests/artifacts-non-get/updated-source-access.sdk.json +94 -0
- package/tests/build-url-mapping-pass2.mjs +77 -0
- package/tests/build-url-mapping.mjs +101 -0
- package/tests/check-broken-links.mjs +89 -0
- package/tests/diff-api-vs-sdk.mjs +94 -0
- package/tests/diff-passed.mjs +99 -0
- package/tests/diff-strict.mjs +81 -0
- package/tests/non-get-endpoints-fixtures.json +328 -0
- package/tests/validate-get-endpoints.ts +16 -5
- package/tests/validate-non-get-endpoints.ts +477 -0
- package/tests/validate-non-get-lifecycle.ts +1093 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"success": true,
|
|
3
|
+
"data": {
|
|
4
|
+
"thumbnail": "https://images.fastpix.io/446315bf-11a7-44d2-92ef-a0c56808d2d0/thumbnail.png",
|
|
5
|
+
"id": "3123e275-3f7f-4abf-9655-7a8f5a7dbc61",
|
|
6
|
+
"workspaceId": "fd9197bb-8cfa-4569-b046-a30fb95e2381",
|
|
7
|
+
"metadata": {
|
|
8
|
+
"updated": "true"
|
|
9
|
+
},
|
|
10
|
+
"mediaQuality": "standard",
|
|
11
|
+
"creatorId": "8fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
12
|
+
"title": "sdk validate title",
|
|
13
|
+
"maxResolution": "720p",
|
|
14
|
+
"sourceResolution": "1080",
|
|
15
|
+
"status": "Ready",
|
|
16
|
+
"sourceAccess": true,
|
|
17
|
+
"playbackIds": [
|
|
18
|
+
{
|
|
19
|
+
"id": "446315bf-11a7-44d2-92ef-a0c56808d2d0",
|
|
20
|
+
"accessPolicy": "public",
|
|
21
|
+
"accessRestrictions": {
|
|
22
|
+
"domains": {
|
|
23
|
+
"defaultPolicy": "allow",
|
|
24
|
+
"allow": [],
|
|
25
|
+
"deny": []
|
|
26
|
+
},
|
|
27
|
+
"userAgents": {
|
|
28
|
+
"defaultPolicy": "allow",
|
|
29
|
+
"allow": [],
|
|
30
|
+
"deny": []
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "ca3fb5ce-b9de-432c-80b9-e332569c735c",
|
|
36
|
+
"accessPolicy": "public",
|
|
37
|
+
"accessRestrictions": {
|
|
38
|
+
"domains": {
|
|
39
|
+
"defaultPolicy": "allow",
|
|
40
|
+
"allow": [],
|
|
41
|
+
"deny": []
|
|
42
|
+
},
|
|
43
|
+
"userAgents": {
|
|
44
|
+
"defaultPolicy": "allow",
|
|
45
|
+
"allow": [],
|
|
46
|
+
"deny": []
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"tracks": [
|
|
52
|
+
{
|
|
53
|
+
"id": "237e7472-0fac-458b-9dd4-209844533803",
|
|
54
|
+
"type": "subtitle",
|
|
55
|
+
"status": "preparing",
|
|
56
|
+
"languageCode": "en-US",
|
|
57
|
+
"languageName": "English"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "58ccc04e-dbbc-4ed2-bc04-f128106034a2",
|
|
61
|
+
"type": "audio",
|
|
62
|
+
"status": "available",
|
|
63
|
+
"languageCode": "it",
|
|
64
|
+
"languageName": "Italian"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "5cf0ba86-4615-4bd6-a04a-f0c0e89610df",
|
|
68
|
+
"type": "video",
|
|
69
|
+
"width": 1920,
|
|
70
|
+
"height": 1080,
|
|
71
|
+
"frameRate": "60.000",
|
|
72
|
+
"status": "available"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "c1926bee-969c-431f-b7c5-d321eb9460d3",
|
|
76
|
+
"type": "audio",
|
|
77
|
+
"status": "available",
|
|
78
|
+
"languageCode": "und",
|
|
79
|
+
"languageName": "default"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"generatedSubtitles": [
|
|
83
|
+
{
|
|
84
|
+
"status": "preparing"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"isAudioOnly": false,
|
|
88
|
+
"subtitleAvailable": false,
|
|
89
|
+
"duration": "00:00:10",
|
|
90
|
+
"aspectRatio": "16:9",
|
|
91
|
+
"createdAt": "2026-05-20T12:50:15.662960Z",
|
|
92
|
+
"updatedAt": "2026-05-20T12:54:15.795092Z"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"success": true,
|
|
3
|
+
"data": {
|
|
4
|
+
"thumbnail": "https://images.fastpix.io/446315bf-11a7-44d2-92ef-a0c56808d2d0/thumbnail.png",
|
|
5
|
+
"id": "3123e275-3f7f-4abf-9655-7a8f5a7dbc61",
|
|
6
|
+
"workspaceId": "fd9197bb-8cfa-4569-b046-a30fb95e2381",
|
|
7
|
+
"metadata": {
|
|
8
|
+
"updated": "true"
|
|
9
|
+
},
|
|
10
|
+
"mediaQuality": "standard",
|
|
11
|
+
"creatorId": "8fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
12
|
+
"title": "sdk validate title",
|
|
13
|
+
"maxResolution": "720p",
|
|
14
|
+
"sourceResolution": "1080",
|
|
15
|
+
"status": "Ready",
|
|
16
|
+
"sourceAccess": true,
|
|
17
|
+
"playbackIds": [
|
|
18
|
+
{
|
|
19
|
+
"id": "446315bf-11a7-44d2-92ef-a0c56808d2d0",
|
|
20
|
+
"accessPolicy": "public",
|
|
21
|
+
"accessRestrictions": {
|
|
22
|
+
"domains": {
|
|
23
|
+
"defaultPolicy": "allow",
|
|
24
|
+
"allow": [],
|
|
25
|
+
"deny": []
|
|
26
|
+
},
|
|
27
|
+
"userAgents": {
|
|
28
|
+
"defaultPolicy": "allow",
|
|
29
|
+
"allow": [],
|
|
30
|
+
"deny": []
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "ca3fb5ce-b9de-432c-80b9-e332569c735c",
|
|
36
|
+
"accessPolicy": "public",
|
|
37
|
+
"accessRestrictions": {
|
|
38
|
+
"domains": {
|
|
39
|
+
"defaultPolicy": "allow",
|
|
40
|
+
"allow": [],
|
|
41
|
+
"deny": []
|
|
42
|
+
},
|
|
43
|
+
"userAgents": {
|
|
44
|
+
"defaultPolicy": "allow",
|
|
45
|
+
"allow": [],
|
|
46
|
+
"deny": []
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"tracks": [
|
|
52
|
+
{
|
|
53
|
+
"id": "237e7472-0fac-458b-9dd4-209844533803",
|
|
54
|
+
"type": "subtitle",
|
|
55
|
+
"status": "preparing",
|
|
56
|
+
"languageName": "English",
|
|
57
|
+
"languageCode": "en-US"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "58ccc04e-dbbc-4ed2-bc04-f128106034a2",
|
|
61
|
+
"type": "audio",
|
|
62
|
+
"status": "available",
|
|
63
|
+
"languageName": "Italian",
|
|
64
|
+
"languageCode": "it"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "5cf0ba86-4615-4bd6-a04a-f0c0e89610df",
|
|
68
|
+
"type": "video",
|
|
69
|
+
"width": 1920,
|
|
70
|
+
"height": 1080,
|
|
71
|
+
"frameRate": "60.000",
|
|
72
|
+
"status": "available"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "c1926bee-969c-431f-b7c5-d321eb9460d3",
|
|
76
|
+
"type": "audio",
|
|
77
|
+
"status": "available",
|
|
78
|
+
"languageName": "default",
|
|
79
|
+
"languageCode": "und"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"generatedSubtitles": [
|
|
83
|
+
{
|
|
84
|
+
"status": "preparing"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"isAudioOnly": false,
|
|
88
|
+
"subtitleAvailable": false,
|
|
89
|
+
"duration": "00:00:10",
|
|
90
|
+
"aspectRatio": "16:9",
|
|
91
|
+
"createdAt": "2026-05-20T12:50:15.662Z",
|
|
92
|
+
"updatedAt": "2026-05-20T12:54:15.795Z"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Second-pass URL replacements for entries that didn't match by link text.
|
|
2
|
+
import { readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
3
|
+
import { join, dirname } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const ROOT = join(__dirname, "..");
|
|
8
|
+
|
|
9
|
+
const urlMap = {
|
|
10
|
+
"https://docs.fastpix.com/": "https://fastpix.com/docs/",
|
|
11
|
+
"https://docs.fastpix.com/changelog/api-update-direct-upload-media-from-device":
|
|
12
|
+
"https://fastpix.com/docs/changelog/api-update-direct-upload-media-from-device",
|
|
13
|
+
"https://docs.fastpix.com/docs/basic-authentication":
|
|
14
|
+
"https://fastpix.com/docs/getting-started/activate-your-account#authentication-format",
|
|
15
|
+
"https://docs.fastpix.com/docs/live-stream-overview":
|
|
16
|
+
"https://fastpix.com/docs/get-started/live-overview",
|
|
17
|
+
"https://docs.fastpix.com/docs/video-data-overview":
|
|
18
|
+
"https://fastpix.com/docs/concepts/what-video-data-do-we-capture",
|
|
19
|
+
// No 1:1 replacement in fixed.yaml. Closest user-facing page for the
|
|
20
|
+
// signing-keys concept lives under video-security:
|
|
21
|
+
"https://docs.fastpix.com/reference/signingkeys-overview":
|
|
22
|
+
"https://fastpix.com/docs/video-security/secure-media-access-with-jwts",
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const sortedKeys = Object.keys(urlMap).sort((a, b) => b.length - a.length);
|
|
26
|
+
|
|
27
|
+
function walk(dir, out = []) {
|
|
28
|
+
for (const f of readdirSync(dir)) {
|
|
29
|
+
const p = join(dir, f);
|
|
30
|
+
const st = statSync(p);
|
|
31
|
+
if (st.isDirectory()) {
|
|
32
|
+
if (f === "node_modules" || f === ".git" || f === "dist") continue;
|
|
33
|
+
walk(p, out);
|
|
34
|
+
} else if (f.endsWith(".md")) {
|
|
35
|
+
out.push(p);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const mdFiles = walk(ROOT);
|
|
42
|
+
let totalReplacements = 0;
|
|
43
|
+
let filesChanged = 0;
|
|
44
|
+
for (const file of mdFiles) {
|
|
45
|
+
let content = readFileSync(file, "utf-8");
|
|
46
|
+
let fileCount = 0;
|
|
47
|
+
for (const oldUrl of sortedKeys) {
|
|
48
|
+
const newUrl = urlMap[oldUrl];
|
|
49
|
+
if (content.includes(oldUrl)) {
|
|
50
|
+
const count = content.split(oldUrl).length - 1;
|
|
51
|
+
content = content.split(oldUrl).join(newUrl);
|
|
52
|
+
fileCount += count;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (fileCount > 0) {
|
|
56
|
+
writeFileSync(file, content);
|
|
57
|
+
filesChanged++;
|
|
58
|
+
totalReplacements += fileCount;
|
|
59
|
+
console.log(` ${file.replace(ROOT + "/", "")} (${fileCount} replacements)`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
console.log(`\nPass 2: ${totalReplacements} replacements across ${filesChanged} files.`);
|
|
63
|
+
|
|
64
|
+
// Verify no docs.fastpix URLs remain
|
|
65
|
+
const remaining = new Set();
|
|
66
|
+
for (const file of mdFiles) {
|
|
67
|
+
const c = readFileSync(file, "utf-8");
|
|
68
|
+
for (const m of c.matchAll(/https?:\/\/docs\.fastpix\.[^\s"')<>]+/g)) {
|
|
69
|
+
remaining.add(`${m[0]} (in ${file.replace(ROOT + "/", "")})`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (remaining.size) {
|
|
73
|
+
console.log(`\nStill-unresolved docs.fastpix URLs:`);
|
|
74
|
+
for (const u of [...remaining].sort()) console.log(` ${u}`);
|
|
75
|
+
} else {
|
|
76
|
+
console.log(`\n✅ Zero docs.fastpix URLs remain in any markdown file.`);
|
|
77
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// Build OLD → NEW URL mapping by pairing <a href="...">text</a> entries
|
|
2
|
+
// across old-yaml.yaml and fixed.yaml. Then apply to every README under
|
|
3
|
+
// the repo (excluding node_modules and the yaml files themselves).
|
|
4
|
+
import { readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
5
|
+
import { join, dirname } from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const ROOT = join(__dirname, "..");
|
|
10
|
+
|
|
11
|
+
// Parse all <a href="URL">TEXT</a> pairs in a yaml.
|
|
12
|
+
function extractAnchors(yamlPath) {
|
|
13
|
+
const text = readFileSync(yamlPath, "utf-8");
|
|
14
|
+
const re = /<a href="(https?:\/\/[^"]+)"[^>]*>([^<]+)<\/a>/g;
|
|
15
|
+
const map = new Map(); // text → set of urls
|
|
16
|
+
let m;
|
|
17
|
+
while ((m = re.exec(text))) {
|
|
18
|
+
const url = m[1].trim();
|
|
19
|
+
const linkText = m[2].trim();
|
|
20
|
+
if (!map.has(linkText)) map.set(linkText, new Set());
|
|
21
|
+
map.get(linkText).add(url);
|
|
22
|
+
}
|
|
23
|
+
return map;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const oldMap = extractAnchors(join(ROOT, "old-yaml.yaml"));
|
|
27
|
+
const newMap = extractAnchors(join(ROOT, "fixed.yaml"));
|
|
28
|
+
|
|
29
|
+
// Build oldURL → newURL by linkText match.
|
|
30
|
+
const urlMap = new Map();
|
|
31
|
+
for (const [text, oldUrls] of oldMap) {
|
|
32
|
+
const newUrls = newMap.get(text);
|
|
33
|
+
if (!newUrls) continue;
|
|
34
|
+
// Prefer same-domain replacement; pick first new url
|
|
35
|
+
const newUrl = [...newUrls][0];
|
|
36
|
+
for (const oldUrl of oldUrls) {
|
|
37
|
+
if (oldUrl !== newUrl) urlMap.set(oldUrl, newUrl);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Sort longest first to avoid prefix collisions in replacement
|
|
42
|
+
const sortedKeys = [...urlMap.keys()].sort((a, b) => b.length - a.length);
|
|
43
|
+
|
|
44
|
+
// Walk all .md files (excluding node_modules)
|
|
45
|
+
function walk(dir, out = []) {
|
|
46
|
+
for (const f of readdirSync(dir)) {
|
|
47
|
+
const p = join(dir, f);
|
|
48
|
+
const st = statSync(p);
|
|
49
|
+
if (st.isDirectory()) {
|
|
50
|
+
if (f === "node_modules" || f === ".git" || f === "dist") continue;
|
|
51
|
+
walk(p, out);
|
|
52
|
+
} else if (f.endsWith(".md")) {
|
|
53
|
+
out.push(p);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return out;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const mdFiles = walk(ROOT);
|
|
60
|
+
let totalReplacements = 0;
|
|
61
|
+
let filesChanged = 0;
|
|
62
|
+
|
|
63
|
+
for (const file of mdFiles) {
|
|
64
|
+
let content = readFileSync(file, "utf-8");
|
|
65
|
+
let changed = false;
|
|
66
|
+
let fileCount = 0;
|
|
67
|
+
for (const oldUrl of sortedKeys) {
|
|
68
|
+
const newUrl = urlMap.get(oldUrl);
|
|
69
|
+
if (content.includes(oldUrl)) {
|
|
70
|
+
const count = (
|
|
71
|
+
content.match(new RegExp(oldUrl.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g")) || []
|
|
72
|
+
).length;
|
|
73
|
+
content = content.split(oldUrl).join(newUrl);
|
|
74
|
+
totalReplacements += count;
|
|
75
|
+
fileCount += count;
|
|
76
|
+
changed = true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (changed) {
|
|
80
|
+
writeFileSync(file, content);
|
|
81
|
+
filesChanged++;
|
|
82
|
+
console.log(` ${file.replace(ROOT + "/", "")} (${fileCount} replacements)`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
console.log(
|
|
87
|
+
`\nSummary: ${urlMap.size} URL mappings, ${totalReplacements} replacements across ${filesChanged} files.`,
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
// Diagnostic: orphan old URLs in markdown that didn't have a new-yaml counterpart
|
|
91
|
+
const allOldUrlsInMd = new Set();
|
|
92
|
+
for (const file of mdFiles) {
|
|
93
|
+
const c = readFileSync(file, "utf-8");
|
|
94
|
+
for (const m of c.matchAll(/https?:\/\/docs\.fastpix\.[^\s"')<>]+/g)) {
|
|
95
|
+
allOldUrlsInMd.add(m[0]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (allOldUrlsInMd.size) {
|
|
99
|
+
console.log(`\nUnmapped old docs.fastpix URLs still in markdown:`);
|
|
100
|
+
for (const u of [...allOldUrlsInMd].sort()) console.log(` ${u}`);
|
|
101
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Check every external URL across all markdown files for broken links.
|
|
2
|
+
// Uses HEAD first, falls back to GET if HEAD fails. Treats 2xx/3xx as OK.
|
|
3
|
+
import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
4
|
+
import { join, dirname } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const ROOT = join(__dirname, "..");
|
|
9
|
+
|
|
10
|
+
function walk(dir, out = []) {
|
|
11
|
+
for (const f of readdirSync(dir)) {
|
|
12
|
+
const p = join(dir, f);
|
|
13
|
+
const st = statSync(p);
|
|
14
|
+
if (st.isDirectory()) {
|
|
15
|
+
if (["node_modules", ".git", "dist"].includes(f)) continue;
|
|
16
|
+
walk(p, out);
|
|
17
|
+
} else if (f.endsWith(".md")) out.push(p);
|
|
18
|
+
}
|
|
19
|
+
return out;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const mdFiles = walk(ROOT);
|
|
23
|
+
const urlToFiles = new Map(); // url -> Set(files)
|
|
24
|
+
const urlRe = /https?:\/\/[^\s"'<>()[\]`]+/g;
|
|
25
|
+
|
|
26
|
+
for (const f of mdFiles) {
|
|
27
|
+
const content = readFileSync(f, "utf-8");
|
|
28
|
+
for (const m of content.matchAll(urlRe)) {
|
|
29
|
+
let url = m[0].replace(/[.,;:)\]]+$/, ""); // strip trailing punctuation
|
|
30
|
+
if (!urlToFiles.has(url)) urlToFiles.set(url, new Set());
|
|
31
|
+
urlToFiles.get(url).add(f.replace(ROOT + "/", ""));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const urls = [...urlToFiles.keys()].sort();
|
|
36
|
+
console.log(`Checking ${urls.length} unique URLs across ${mdFiles.length} markdown files...\n`);
|
|
37
|
+
|
|
38
|
+
async function checkUrl(url) {
|
|
39
|
+
const ctrl = new AbortController();
|
|
40
|
+
const timer = setTimeout(() => ctrl.abort(), 15000);
|
|
41
|
+
try {
|
|
42
|
+
let res = await fetch(url, {
|
|
43
|
+
method: "HEAD",
|
|
44
|
+
redirect: "follow",
|
|
45
|
+
signal: ctrl.signal,
|
|
46
|
+
headers: { "User-Agent": "Mozilla/5.0 (link-checker)" },
|
|
47
|
+
});
|
|
48
|
+
// Many servers reject HEAD (405) — fall back to GET range.
|
|
49
|
+
if (res.status === 405 || res.status === 403 || res.status === 0) {
|
|
50
|
+
res = await fetch(url, {
|
|
51
|
+
method: "GET",
|
|
52
|
+
redirect: "follow",
|
|
53
|
+
signal: ctrl.signal,
|
|
54
|
+
headers: { "User-Agent": "Mozilla/5.0 (link-checker)", Range: "bytes=0-0" },
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return { ok: res.ok || (res.status >= 200 && res.status < 400), status: res.status };
|
|
58
|
+
} catch (e) {
|
|
59
|
+
return { ok: false, status: 0, error: e.name === "AbortError" ? "timeout" : e.message };
|
|
60
|
+
} finally {
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const broken = [];
|
|
66
|
+
const concurrency = 10;
|
|
67
|
+
let idx = 0;
|
|
68
|
+
async function worker() {
|
|
69
|
+
while (idx < urls.length) {
|
|
70
|
+
const i = idx++;
|
|
71
|
+
const url = urls[i];
|
|
72
|
+
const r = await checkUrl(url);
|
|
73
|
+
const tag = r.ok ? "✅" : "❌";
|
|
74
|
+
const status = r.status || r.error || "?";
|
|
75
|
+
process.stdout.write(
|
|
76
|
+
`${tag} [${String(i + 1).padStart(3)}/${urls.length}] ${status} ${url}\n`,
|
|
77
|
+
);
|
|
78
|
+
if (!r.ok) broken.push({ url, status: r.status, error: r.error, files: [...urlToFiles.get(url)] });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
await Promise.all(Array.from({ length: concurrency }, worker));
|
|
82
|
+
|
|
83
|
+
console.log(`\n=== Broken links: ${broken.length} ===`);
|
|
84
|
+
for (const b of broken) {
|
|
85
|
+
console.log(`\n${b.url}`);
|
|
86
|
+
console.log(` status: ${b.status || b.error}`);
|
|
87
|
+
console.log(` appears in:`);
|
|
88
|
+
for (const f of b.files) console.log(` - ${f}`);
|
|
89
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// One-shot diff over GET artifact pairs.
|
|
2
|
+
// For each <op>.api.json + <op>.sdk.json pair:
|
|
3
|
+
// - missingInSDK : paths in API not in SDK
|
|
4
|
+
// - nullInSDKNotInAPI : paths in SDK whose value is null AND not present in API
|
|
5
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
6
|
+
import { join, dirname } from "node:path";
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
8
|
+
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const ARTIFACTS = join(__dirname, "artifacts");
|
|
11
|
+
|
|
12
|
+
function canonicalKey(k) {
|
|
13
|
+
const camel = k.includes("_")
|
|
14
|
+
? k.toLowerCase().replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())
|
|
15
|
+
: k;
|
|
16
|
+
return camel.replaceAll("SDK", "Sdk").replaceAll("API", "Api");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Collect leaf+intermediate paths. For SDK side, also track which paths have a
|
|
20
|
+
// null value so we can isolate "field exists but value is null" cases.
|
|
21
|
+
function collectPaths(value, prefix = "", out = new Map()) {
|
|
22
|
+
if (value === undefined) return out;
|
|
23
|
+
if (value === null) {
|
|
24
|
+
if (prefix) out.set(prefix, "null");
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
if (typeof value !== "object") {
|
|
28
|
+
if (prefix) out.set(prefix, "value");
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
if (Array.isArray(value)) {
|
|
32
|
+
// treat [] same as missing — skip empty arrays for comparison
|
|
33
|
+
if (value.length === 0) return out;
|
|
34
|
+
const p = prefix ? `${prefix}[]` : "[]";
|
|
35
|
+
out.set(p, "array");
|
|
36
|
+
for (const item of value) collectPaths(item, p, out);
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
for (const [k, v] of Object.entries(value)) {
|
|
40
|
+
if (Array.isArray(v) && v.length === 0) continue;
|
|
41
|
+
const ck = canonicalKey(k);
|
|
42
|
+
const p = prefix ? `${prefix}.${ck}` : ck;
|
|
43
|
+
out.set(p, v === null ? "null" : typeof v === "object" ? "object" : "value");
|
|
44
|
+
collectPaths(v, p, out);
|
|
45
|
+
}
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const files = readdirSync(ARTIFACTS);
|
|
50
|
+
const ops = new Set();
|
|
51
|
+
for (const f of files) {
|
|
52
|
+
const m = f.match(/^(.+)\.(api|sdk)\.json$/);
|
|
53
|
+
if (m) ops.add(m[1]);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const report = [];
|
|
57
|
+
for (const op of [...ops].sort()) {
|
|
58
|
+
const apiPath = join(ARTIFACTS, `${op}.api.json`);
|
|
59
|
+
const sdkPath = join(ARTIFACTS, `${op}.sdk.json`);
|
|
60
|
+
let api, sdk;
|
|
61
|
+
try {
|
|
62
|
+
api = JSON.parse(readFileSync(apiPath, "utf-8"));
|
|
63
|
+
sdk = JSON.parse(readFileSync(sdkPath, "utf-8"));
|
|
64
|
+
} catch {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const apiPaths = collectPaths(api);
|
|
69
|
+
const sdkPaths = collectPaths(sdk);
|
|
70
|
+
|
|
71
|
+
// Missing in SDK = in API but not in SDK
|
|
72
|
+
const missingInSDK = [...apiPaths.keys()].filter((p) => !sdkPaths.has(p));
|
|
73
|
+
// Null in SDK not in API = SDK path has null value AND API does not have that path
|
|
74
|
+
const nullInSDKNotInAPI = [...sdkPaths.entries()]
|
|
75
|
+
.filter(([p, kind]) => kind === "null" && !apiPaths.has(p))
|
|
76
|
+
.map(([p]) => p);
|
|
77
|
+
|
|
78
|
+
if (missingInSDK.length === 0 && nullInSDKNotInAPI.length === 0) continue;
|
|
79
|
+
|
|
80
|
+
report.push({ op, missingInSDK: missingInSDK.sort(), nullInSDKNotInAPI: nullInSDKNotInAPI.sort() });
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Print compact summary
|
|
84
|
+
console.log(`\nEndpoints with mismatches: ${report.length}\n`);
|
|
85
|
+
for (const r of report) {
|
|
86
|
+
console.log(`── ${r.op} ──`);
|
|
87
|
+
if (r.missingInSDK.length) {
|
|
88
|
+
console.log(` Missing in SDK (${r.missingInSDK.length}): ${r.missingInSDK.join(", ")}`);
|
|
89
|
+
}
|
|
90
|
+
if (r.nullInSDKNotInAPI.length) {
|
|
91
|
+
console.log(` Null in SDK, absent in API (${r.nullInSDKNotInAPI.length}): ${r.nullInSDKNotInAPI.join(", ")}`);
|
|
92
|
+
}
|
|
93
|
+
console.log();
|
|
94
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Per-endpoint strict diff for every PASSED endpoint (SDK call resolved).
|
|
2
|
+
// Reports: clean match, or specific field-name differences.
|
|
3
|
+
// - missingInSDK: API has the field, SDK doesn't
|
|
4
|
+
// - extraInSDK: SDK has the field, API doesn't
|
|
5
|
+
// Skips: artifacts where the SDK threw / API returned an error envelope.
|
|
6
|
+
|
|
7
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
8
|
+
import { join, dirname } from "node:path";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
|
|
11
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
const ARTIFACTS = join(__dirname, "artifacts");
|
|
13
|
+
|
|
14
|
+
function collectPathsStrict(value, prefix = "", out = new Set()) {
|
|
15
|
+
if (value === undefined || value === null) return out;
|
|
16
|
+
if (typeof value !== "object") return out;
|
|
17
|
+
if (Array.isArray(value)) {
|
|
18
|
+
if (value.length === 0) return out;
|
|
19
|
+
const p = prefix ? `${prefix}[]` : "[]";
|
|
20
|
+
for (const item of value) collectPathsStrict(item, p, out);
|
|
21
|
+
return out;
|
|
22
|
+
}
|
|
23
|
+
for (const [k, v] of Object.entries(value)) {
|
|
24
|
+
const p = prefix ? `${prefix}.${k}` : k;
|
|
25
|
+
out.add(p);
|
|
26
|
+
collectPathsStrict(v, p, out);
|
|
27
|
+
}
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const files = readdirSync(ARTIFACTS);
|
|
32
|
+
const ops = new Set();
|
|
33
|
+
for (const f of files) {
|
|
34
|
+
const m = f.match(/^(.+)\.(api|sdk)\.json$/);
|
|
35
|
+
if (m) ops.add(m[1]);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const sorted = [...ops].sort();
|
|
39
|
+
let clean = 0;
|
|
40
|
+
let dirty = 0;
|
|
41
|
+
let skipped = 0;
|
|
42
|
+
const dirtyDetails = [];
|
|
43
|
+
|
|
44
|
+
for (const op of sorted) {
|
|
45
|
+
const apiPath = join(ARTIFACTS, `${op}.api.json`);
|
|
46
|
+
const sdkPath = join(ARTIFACTS, `${op}.sdk.json`);
|
|
47
|
+
let api, sdk;
|
|
48
|
+
try {
|
|
49
|
+
api = JSON.parse(readFileSync(apiPath, "utf-8"));
|
|
50
|
+
sdk = JSON.parse(readFileSync(sdkPath, "utf-8"));
|
|
51
|
+
} catch {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
// Skip 4xx/error artifacts — not real schema comparisons
|
|
55
|
+
if (api && api.success === false) {
|
|
56
|
+
skipped++;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (sdk && sdk.statusCode && sdk.statusCode >= 400) {
|
|
60
|
+
skipped++;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const apiPaths = collectPathsStrict(api);
|
|
65
|
+
const sdkPaths = collectPathsStrict(sdk);
|
|
66
|
+
|
|
67
|
+
const missingInSDK = [...apiPaths].filter((p) => !sdkPaths.has(p)).sort();
|
|
68
|
+
const extraInSDK = [...sdkPaths].filter((p) => !apiPaths.has(p)).sort();
|
|
69
|
+
|
|
70
|
+
if (missingInSDK.length === 0 && extraInSDK.length === 0) {
|
|
71
|
+
clean++;
|
|
72
|
+
console.log(`✅ ${op}`);
|
|
73
|
+
} else {
|
|
74
|
+
dirty++;
|
|
75
|
+
dirtyDetails.push({ op, missingInSDK, extraInSDK });
|
|
76
|
+
console.log(
|
|
77
|
+
`⚠️ ${op} (missing: ${missingInSDK.length}, extra: ${extraInSDK.length})`,
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (dirtyDetails.length) {
|
|
83
|
+
console.log("\n=== Details ===");
|
|
84
|
+
for (const { op, missingInSDK, extraInSDK } of dirtyDetails) {
|
|
85
|
+
console.log(`\n── ${op} ──`);
|
|
86
|
+
if (missingInSDK.length) {
|
|
87
|
+
console.log(` Missing in SDK (API has, SDK doesn't): ${missingInSDK.length}`);
|
|
88
|
+
for (const p of missingInSDK) console.log(` - ${p}`);
|
|
89
|
+
}
|
|
90
|
+
if (extraInSDK.length) {
|
|
91
|
+
console.log(` Extra in SDK (SDK has, API doesn't): ${extraInSDK.length}`);
|
|
92
|
+
for (const p of extraInSDK) console.log(` - ${p}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
console.log(
|
|
98
|
+
`\nSummary: clean=${clean} dirty=${dirty} skipped(error-responses)=${skipped} total=${clean + dirty + skipped}`,
|
|
99
|
+
);
|