@xeonr/upload-pool-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -0
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +15 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/job-context.d.ts +18 -0
- package/dist/job-context.d.ts.map +1 -0
- package/dist/job-context.js +176 -0
- package/dist/job-context.js.map +1 -0
- package/dist/pool.d.ts +16 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +111 -0
- package/dist/pool.js.map +1 -0
- package/dist/protocol/buf/validate/expression_pb.d.ts +128 -0
- package/dist/protocol/buf/validate/expression_pb.d.ts.map +1 -0
- package/dist/protocol/buf/validate/expression_pb.js +34 -0
- package/dist/protocol/buf/validate/expression_pb.js.map +1 -0
- package/dist/protocol/buf/validate/priv/private_pb.d.ts +54 -0
- package/dist/protocol/buf/validate/priv/private_pb.d.ts.map +1 -0
- package/dist/protocol/buf/validate/priv/private_pb.js +36 -0
- package/dist/protocol/buf/validate/priv/private_pb.js.map +1 -0
- package/dist/protocol/buf/validate/validate_pb.d.ts +3685 -0
- package/dist/protocol/buf/validate/validate_pb.d.ts.map +1 -0
- package/dist/protocol/buf/validate/validate_pb.js +223 -0
- package/dist/protocol/buf/validate/validate_pb.js.map +1 -0
- package/dist/protocol/gnostic/discovery/v1/discovery_pb.d.ts +816 -0
- package/dist/protocol/gnostic/discovery/v1/discovery_pb.d.ts.map +1 -0
- package/dist/protocol/gnostic/discovery/v1/discovery_pb.js +160 -0
- package/dist/protocol/gnostic/discovery/v1/discovery_pb.js.map +1 -0
- package/dist/protocol/gnostic/openapi/v2/openapiv2_pb.d.ts +2229 -0
- package/dist/protocol/gnostic/openapi/v2/openapiv2_pb.d.ts.map +1 -0
- package/dist/protocol/gnostic/openapi/v2/openapiv2_pb.js +320 -0
- package/dist/protocol/gnostic/openapi/v2/openapiv2_pb.js.map +1 -0
- package/dist/protocol/gnostic/openapi/v3/annotations_pb.d.ts +24 -0
- package/dist/protocol/gnostic/openapi/v3/annotations_pb.d.ts.map +1 -0
- package/dist/protocol/gnostic/openapi/v3/annotations_pb.js +37 -0
- package/dist/protocol/gnostic/openapi/v3/annotations_pb.js.map +1 -0
- package/dist/protocol/gnostic/openapi/v3/openapiv3_pb.d.ts +2245 -0
- package/dist/protocol/gnostic/openapi/v3/openapiv3_pb.d.ts.map +1 -0
- package/dist/protocol/gnostic/openapi/v3/openapiv3_pb.js +410 -0
- package/dist/protocol/gnostic/openapi/v3/openapiv3_pb.js.map +1 -0
- package/dist/protocol/google/api/annotations_pb.d.ts +14 -0
- package/dist/protocol/google/api/annotations_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/annotations_pb.js +27 -0
- package/dist/protocol/google/api/annotations_pb.js.map +1 -0
- package/dist/protocol/google/api/client_pb.d.ts +1034 -0
- package/dist/protocol/google/api/client_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/client_pb.js +338 -0
- package/dist/protocol/google/api/client_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/checked_pb.d.ts +672 -0
- package/dist/protocol/google/api/expr/v1alpha1/checked_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/checked_pb.js +176 -0
- package/dist/protocol/google/api/expr/v1alpha1/checked_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/eval_pb.d.ts +185 -0
- package/dist/protocol/google/api/expr/v1alpha1/eval_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/eval_pb.js +46 -0
- package/dist/protocol/google/api/expr/v1alpha1/eval_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/explain_pb.d.ts +68 -0
- package/dist/protocol/google/api/expr/v1alpha1/explain_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/explain_pb.js +32 -0
- package/dist/protocol/google/api/expr/v1alpha1/explain_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/syntax_pb.d.ts +796 -0
- package/dist/protocol/google/api/expr/v1alpha1/syntax_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/syntax_pb.js +128 -0
- package/dist/protocol/google/api/expr/v1alpha1/syntax_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/value_pb.d.ts +224 -0
- package/dist/protocol/google/api/expr/v1alpha1/value_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1alpha1/value_pb.js +45 -0
- package/dist/protocol/google/api/expr/v1alpha1/value_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/decl_pb.d.ts +151 -0
- package/dist/protocol/google/api/expr/v1beta1/decl_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/decl_pb.js +41 -0
- package/dist/protocol/google/api/expr/v1beta1/decl_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/eval_pb.d.ts +203 -0
- package/dist/protocol/google/api/expr/v1beta1/eval_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/eval_pb.js +52 -0
- package/dist/protocol/google/api/expr/v1beta1/eval_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/expr_pb.d.ts +504 -0
- package/dist/protocol/google/api/expr/v1beta1/expr_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/expr_pb.js +72 -0
- package/dist/protocol/google/api/expr/v1beta1/expr_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/source_pb.d.ts +86 -0
- package/dist/protocol/google/api/expr/v1beta1/source_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/source_pb.js +30 -0
- package/dist/protocol/google/api/expr/v1beta1/source_pb.js.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/value_pb.d.ts +224 -0
- package/dist/protocol/google/api/expr/v1beta1/value_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/expr/v1beta1/value_pb.js +46 -0
- package/dist/protocol/google/api/expr/v1beta1/value_pb.js.map +1 -0
- package/dist/protocol/google/api/field_behavior_pb.d.ts +122 -0
- package/dist/protocol/google/api/field_behavior_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/field_behavior_pb.js +136 -0
- package/dist/protocol/google/api/field_behavior_pb.js.map +1 -0
- package/dist/protocol/google/api/field_info_pb.d.ts +140 -0
- package/dist/protocol/google/api/field_info_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/field_info_pb.js +108 -0
- package/dist/protocol/google/api/field_info_pb.js.map +1 -0
- package/dist/protocol/google/api/http_pb.d.ts +441 -0
- package/dist/protocol/google/api/http_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/http_pb.js +34 -0
- package/dist/protocol/google/api/http_pb.js.map +1 -0
- package/dist/protocol/google/api/httpbody_pb.d.ts +81 -0
- package/dist/protocol/google/api/httpbody_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/httpbody_pb.js +25 -0
- package/dist/protocol/google/api/httpbody_pb.js.map +1 -0
- package/dist/protocol/google/api/launch_stage_pb.d.ts +87 -0
- package/dist/protocol/google/api/launch_stage_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/launch_stage_pb.js +101 -0
- package/dist/protocol/google/api/launch_stage_pb.js.map +1 -0
- package/dist/protocol/google/api/resource_pb.d.ts +304 -0
- package/dist/protocol/google/api/resource_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/resource_pb.js +116 -0
- package/dist/protocol/google/api/resource_pb.js.map +1 -0
- package/dist/protocol/google/api/routing_pb.d.ts +476 -0
- package/dist/protocol/google/api/routing_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/routing_pb.js +36 -0
- package/dist/protocol/google/api/routing_pb.js.map +1 -0
- package/dist/protocol/google/api/visibility_pb.d.ts +128 -0
- package/dist/protocol/google/api/visibility_pb.d.ts.map +1 -0
- package/dist/protocol/google/api/visibility_pb.js +66 -0
- package/dist/protocol/google/api/visibility_pb.js.map +1 -0
- package/dist/protocol/google/bytestream/bytestream_pb.d.ts +278 -0
- package/dist/protocol/google/bytestream/bytestream_pb.d.ts.map +1 -0
- package/dist/protocol/google/bytestream/bytestream_pb.js +77 -0
- package/dist/protocol/google/bytestream/bytestream_pb.js.map +1 -0
- package/dist/protocol/google/geo/type/viewport_pb.d.ts +66 -0
- package/dist/protocol/google/geo/type/viewport_pb.d.ts.map +1 -0
- package/dist/protocol/google/geo/type/viewport_pb.js +26 -0
- package/dist/protocol/google/geo/type/viewport_pb.js.map +1 -0
- package/dist/protocol/google/iam/v1/iam_policy_pb.d.ts +193 -0
- package/dist/protocol/google/iam/v1/iam_policy_pb.d.ts.map +1 -0
- package/dist/protocol/google/iam/v1/iam_policy_pb.js +76 -0
- package/dist/protocol/google/iam/v1/iam_policy_pb.js.map +1 -0
- package/dist/protocol/google/iam/v1/options_pb.d.ts +42 -0
- package/dist/protocol/google/iam/v1/options_pb.d.ts.map +1 -0
- package/dist/protocol/google/iam/v1/options_pb.js +24 -0
- package/dist/protocol/google/iam/v1/options_pb.js.map +1 -0
- package/dist/protocol/google/iam/v1/policy_pb.d.ts +571 -0
- package/dist/protocol/google/iam/v1/policy_pb.d.ts.map +1 -0
- package/dist/protocol/google/iam/v1/policy_pb.js +152 -0
- package/dist/protocol/google/iam/v1/policy_pb.js.map +1 -0
- package/dist/protocol/google/longrunning/operations_pb.d.ts +398 -0
- package/dist/protocol/google/longrunning/operations_pb.d.ts.map +1 -0
- package/dist/protocol/google/longrunning/operations_pb.js +89 -0
- package/dist/protocol/google/longrunning/operations_pb.js.map +1 -0
- package/dist/protocol/google/rpc/code_pb.d.ts +228 -0
- package/dist/protocol/google/rpc/code_pb.d.ts.map +1 -0
- package/dist/protocol/google/rpc/code_pb.js +242 -0
- package/dist/protocol/google/rpc/code_pb.js.map +1 -0
- package/dist/protocol/google/rpc/context/attribute_context_pb.d.ts +560 -0
- package/dist/protocol/google/rpc/context/attribute_context_pb.d.ts.map +1 -0
- package/dist/protocol/google/rpc/context/attribute_context_pb.js +55 -0
- package/dist/protocol/google/rpc/context/attribute_context_pb.js.map +1 -0
- package/dist/protocol/google/rpc/error_details_pb.d.ts +581 -0
- package/dist/protocol/google/rpc/error_details_pb.d.ts.map +1 -0
- package/dist/protocol/google/rpc/error_details_pb.js +90 -0
- package/dist/protocol/google/rpc/error_details_pb.js.map +1 -0
- package/dist/protocol/google/rpc/status_pb.d.ts +49 -0
- package/dist/protocol/google/rpc/status_pb.d.ts.map +1 -0
- package/dist/protocol/google/rpc/status_pb.js +25 -0
- package/dist/protocol/google/rpc/status_pb.js.map +1 -0
- package/dist/protocol/google/type/calendar_period_pb.d.ts +71 -0
- package/dist/protocol/google/type/calendar_period_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/calendar_period_pb.js +85 -0
- package/dist/protocol/google/type/calendar_period_pb.js.map +1 -0
- package/dist/protocol/google/type/color_pb.d.ts +176 -0
- package/dist/protocol/google/type/color_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/color_pb.js +25 -0
- package/dist/protocol/google/type/color_pb.js.map +1 -0
- package/dist/protocol/google/type/date_pb.d.ts +56 -0
- package/dist/protocol/google/type/date_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/date_pb.js +24 -0
- package/dist/protocol/google/type/date_pb.js.map +1 -0
- package/dist/protocol/google/type/datetime_pb.d.ts +148 -0
- package/dist/protocol/google/type/datetime_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/datetime_pb.js +30 -0
- package/dist/protocol/google/type/datetime_pb.js.map +1 -0
- package/dist/protocol/google/type/dayofweek_pb.d.ts +65 -0
- package/dist/protocol/google/type/dayofweek_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/dayofweek_pb.js +79 -0
- package/dist/protocol/google/type/dayofweek_pb.js.map +1 -0
- package/dist/protocol/google/type/decimal_pb.d.ts +89 -0
- package/dist/protocol/google/type/decimal_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/decimal_pb.js +24 -0
- package/dist/protocol/google/type/decimal_pb.js.map +1 -0
- package/dist/protocol/google/type/expr_pb.d.ts +78 -0
- package/dist/protocol/google/type/expr_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/expr_pb.js +24 -0
- package/dist/protocol/google/type/expr_pb.js.map +1 -0
- package/dist/protocol/google/type/fraction_pb.d.ts +32 -0
- package/dist/protocol/google/type/fraction_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/fraction_pb.js +24 -0
- package/dist/protocol/google/type/fraction_pb.js.map +1 -0
- package/dist/protocol/google/type/interval_pb.d.ts +43 -0
- package/dist/protocol/google/type/interval_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/interval_pb.js +25 -0
- package/dist/protocol/google/type/interval_pb.js.map +1 -0
- package/dist/protocol/google/type/latlng_pb.d.ts +35 -0
- package/dist/protocol/google/type/latlng_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/latlng_pb.js +24 -0
- package/dist/protocol/google/type/latlng_pb.js.map +1 -0
- package/dist/protocol/google/type/localized_text_pb.d.ts +35 -0
- package/dist/protocol/google/type/localized_text_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/localized_text_pb.js +24 -0
- package/dist/protocol/google/type/localized_text_pb.js.map +1 -0
- package/dist/protocol/google/type/money_pb.d.ts +43 -0
- package/dist/protocol/google/type/money_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/money_pb.js +24 -0
- package/dist/protocol/google/type/money_pb.js.map +1 -0
- package/dist/protocol/google/type/month_pb.d.ts +95 -0
- package/dist/protocol/google/type/month_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/month_pb.js +109 -0
- package/dist/protocol/google/type/month_pb.js.map +1 -0
- package/dist/protocol/google/type/phone_number_pb.d.ts +145 -0
- package/dist/protocol/google/type/phone_number_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/phone_number_pb.js +29 -0
- package/dist/protocol/google/type/phone_number_pb.js.map +1 -0
- package/dist/protocol/google/type/postal_address_pb.d.ts +160 -0
- package/dist/protocol/google/type/postal_address_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/postal_address_pb.js +24 -0
- package/dist/protocol/google/type/postal_address_pb.js.map +1 -0
- package/dist/protocol/google/type/quaternion_pb.d.ts +99 -0
- package/dist/protocol/google/type/quaternion_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/quaternion_pb.js +24 -0
- package/dist/protocol/google/type/quaternion_pb.js.map +1 -0
- package/dist/protocol/google/type/timeofday_pb.d.ts +52 -0
- package/dist/protocol/google/type/timeofday_pb.d.ts.map +1 -0
- package/dist/protocol/google/type/timeofday_pb.js +24 -0
- package/dist/protocol/google/type/timeofday_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/account_pb.d.ts +144 -0
- package/dist/protocol/uplim/api/v1/account_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/account_pb.js +100 -0
- package/dist/protocol/uplim/api/v1/account_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/auth_pb.d.ts +231 -0
- package/dist/protocol/uplim/api/v1/auth_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/auth_pb.js +65 -0
- package/dist/protocol/uplim/api/v1/auth_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/buckets_pb.d.ts +1920 -0
- package/dist/protocol/uplim/api/v1/buckets_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/buckets_pb.js +471 -0
- package/dist/protocol/uplim/api/v1/buckets_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/content_type_matcher_pb.d.ts +398 -0
- package/dist/protocol/uplim/api/v1/content_type_matcher_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/content_type_matcher_pb.js +79 -0
- package/dist/protocol/uplim/api/v1/content_type_matcher_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/events_pb.d.ts +767 -0
- package/dist/protocol/uplim/api/v1/events_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/events_pb.js +242 -0
- package/dist/protocol/uplim/api/v1/events_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/integration_admin_pb.d.ts +1059 -0
- package/dist/protocol/uplim/api/v1/integration_admin_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/integration_admin_pb.js +209 -0
- package/dist/protocol/uplim/api/v1/integration_admin_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/integration_install_pb.d.ts +313 -0
- package/dist/protocol/uplim/api/v1/integration_install_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/integration_install_pb.js +129 -0
- package/dist/protocol/uplim/api/v1/integration_install_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/integration_types_pb.d.ts +767 -0
- package/dist/protocol/uplim/api/v1/integration_types_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/integration_types_pb.js +221 -0
- package/dist/protocol/uplim/api/v1/integration_types_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/integrations_pb.d.ts +807 -0
- package/dist/protocol/uplim/api/v1/integrations_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/integrations_pb.js +169 -0
- package/dist/protocol/uplim/api/v1/integrations_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/internal_pb.d.ts +204 -0
- package/dist/protocol/uplim/api/v1/internal_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/internal_pb.js +118 -0
- package/dist/protocol/uplim/api/v1/internal_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/metadata_pb.d.ts +265 -0
- package/dist/protocol/uplim/api/v1/metadata_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/metadata_pb.js +50 -0
- package/dist/protocol/uplim/api/v1/metadata_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/public-buckets_pb.d.ts +64 -0
- package/dist/protocol/uplim/api/v1/public-buckets_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/public-buckets_pb.js +28 -0
- package/dist/protocol/uplim/api/v1/public-buckets_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/public-uploads_pb.d.ts +461 -0
- package/dist/protocol/uplim/api/v1/public-uploads_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/public-uploads_pb.js +139 -0
- package/dist/protocol/uplim/api/v1/public-uploads_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/upload-aliases_pb.d.ts +396 -0
- package/dist/protocol/uplim/api/v1/upload-aliases_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/upload-aliases_pb.js +69 -0
- package/dist/protocol/uplim/api/v1/upload-aliases_pb.js.map +1 -0
- package/dist/protocol/uplim/api/v1/uploads_pb.d.ts +3736 -0
- package/dist/protocol/uplim/api/v1/uploads_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/api/v1/uploads_pb.js +732 -0
- package/dist/protocol/uplim/api/v1/uploads_pb.js.map +1 -0
- package/dist/protocol/uplim/workflow/v1/activities_pb.d.ts +394 -0
- package/dist/protocol/uplim/workflow/v1/activities_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/workflow/v1/activities_pb.js +122 -0
- package/dist/protocol/uplim/workflow/v1/activities_pb.js.map +1 -0
- package/dist/protocol/uplim/workflow/v1/integration_queue_admin_pb.d.ts +486 -0
- package/dist/protocol/uplim/workflow/v1/integration_queue_admin_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/workflow/v1/integration_queue_admin_pb.js +158 -0
- package/dist/protocol/uplim/workflow/v1/integration_queue_admin_pb.js.map +1 -0
- package/dist/protocol/uplim/workflow/v1/integration_queue_pb.d.ts +289 -0
- package/dist/protocol/uplim/workflow/v1/integration_queue_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/workflow/v1/integration_queue_pb.js +66 -0
- package/dist/protocol/uplim/workflow/v1/integration_queue_pb.js.map +1 -0
- package/dist/protocol/uplim/workflow/v1/workflows_pb.d.ts +602 -0
- package/dist/protocol/uplim/workflow/v1/workflows_pb.d.ts.map +1 -0
- package/dist/protocol/uplim/workflow/v1/workflows_pb.js +194 -0
- package/dist/protocol/uplim/workflow/v1/workflows_pb.js.map +1 -0
- package/dist/rpc-clients.d.ts +9 -0
- package/dist/rpc-clients.d.ts.map +1 -0
- package/dist/rpc-clients.js +24 -0
- package/dist/rpc-clients.js.map +1 -0
- package/dist/sse-client.d.ts +20 -0
- package/dist/sse-client.d.ts.map +1 -0
- package/dist/sse-client.js +68 -0
- package/dist/sse-client.js.map +1 -0
- package/dist/types.d.ts +174 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -0
- package/package.json +47 -0
- package/src/errors.ts +14 -0
- package/src/index.ts +41 -0
- package/src/job-context.ts +244 -0
- package/src/pool.ts +143 -0
- package/src/protocol/buf/validate/expression_pb.ts +163 -0
- package/src/protocol/buf/validate/priv/private_pb.ts +86 -0
- package/src/protocol/buf/validate/validate_pb.ts +3802 -0
- package/src/protocol/gnostic/discovery/v1/discovery_pb.ts +1020 -0
- package/src/protocol/gnostic/openapi/v2/openapiv2_pb.ts +2679 -0
- package/src/protocol/gnostic/openapi/v3/annotations_pb.ts +55 -0
- package/src/protocol/gnostic/openapi/v3/openapiv3_pb.ts +2660 -0
- package/src/protocol/google/api/annotations_pb.ts +39 -0
- package/src/protocol/google/api/client_pb.ts +1183 -0
- package/src/protocol/google/api/expr/v1alpha1/checked_pb.ts +751 -0
- package/src/protocol/google/api/expr/v1alpha1/eval_pb.ts +222 -0
- package/src/protocol/google/api/expr/v1alpha1/explain_pb.ts +98 -0
- package/src/protocol/google/api/expr/v1alpha1/syntax_pb.ts +882 -0
- package/src/protocol/google/api/expr/v1alpha1/value_pb.ts +260 -0
- package/src/protocol/google/api/expr/v1beta1/decl_pb.ts +191 -0
- package/src/protocol/google/api/expr/v1beta1/eval_pb.ts +244 -0
- package/src/protocol/google/api/expr/v1beta1/expr_pb.ts +565 -0
- package/src/protocol/google/api/expr/v1beta1/source_pb.ts +117 -0
- package/src/protocol/google/api/expr/v1beta1/value_pb.ts +261 -0
- package/src/protocol/google/api/field_behavior_pb.ts +157 -0
- package/src/protocol/google/api/field_info_pb.ts +178 -0
- package/src/protocol/google/api/http_pb.ts +474 -0
- package/src/protocol/google/api/httpbody_pb.ts +108 -0
- package/src/protocol/google/api/launch_stage_pb.ts +118 -0
- package/src/protocol/google/api/resource_pb.ts +354 -0
- package/src/protocol/google/api/routing_pb.ts +507 -0
- package/src/protocol/google/api/visibility_pb.ts +169 -0
- package/src/protocol/google/bytestream/bytestream_pb.ts +325 -0
- package/src/protocol/google/geo/type/viewport_pb.ts +93 -0
- package/src/protocol/google/iam/v1/iam_policy_pb.ts +239 -0
- package/src/protocol/google/iam/v1/options_pb.ts +66 -0
- package/src/protocol/google/iam/v1/policy_pb.ts +644 -0
- package/src/protocol/google/longrunning/operations_pb.ts +460 -0
- package/src/protocol/google/rpc/code_pb.ts +268 -0
- package/src/protocol/google/rpc/context/attribute_context_pb.ts +638 -0
- package/src/protocol/google/rpc/error_details_pb.ts +662 -0
- package/src/protocol/google/rpc/status_pb.ts +76 -0
- package/src/protocol/google/type/calendar_period_pb.ts +102 -0
- package/src/protocol/google/type/color_pb.ts +204 -0
- package/src/protocol/google/type/date_pb.ts +82 -0
- package/src/protocol/google/type/datetime_pb.ts +181 -0
- package/src/protocol/google/type/dayofweek_pb.ts +96 -0
- package/src/protocol/google/type/decimal_pb.ts +113 -0
- package/src/protocol/google/type/expr_pb.ts +105 -0
- package/src/protocol/google/type/fraction_pb.ts +57 -0
- package/src/protocol/google/type/interval_pb.ts +69 -0
- package/src/protocol/google/type/latlng_pb.ts +60 -0
- package/src/protocol/google/type/localized_text_pb.ts +60 -0
- package/src/protocol/google/type/money_pb.ts +69 -0
- package/src/protocol/google/type/month_pb.ts +131 -0
- package/src/protocol/google/type/phone_number_pb.ts +171 -0
- package/src/protocol/google/type/postal_address_pb.ts +194 -0
- package/src/protocol/google/type/quaternion_pb.ts +126 -0
- package/src/protocol/google/type/timeofday_pb.ts +79 -0
- package/src/protocol/uplim/api/v1/account_pb.ts +178 -0
- package/src/protocol/uplim/api/v1/auth_pb.ts +278 -0
- package/src/protocol/uplim/api/v1/buckets_pb.ts +2214 -0
- package/src/protocol/uplim/api/v1/content_type_matcher_pb.ts +448 -0
- package/src/protocol/uplim/api/v1/events_pb.ts +874 -0
- package/src/protocol/uplim/api/v1/integration_admin_pb.ts +1237 -0
- package/src/protocol/uplim/api/v1/integration_install_pb.ts +386 -0
- package/src/protocol/uplim/api/v1/integration_types_pb.ts +896 -0
- package/src/protocol/uplim/api/v1/integrations_pb.ts +944 -0
- package/src/protocol/uplim/api/v1/internal_pb.ts +234 -0
- package/src/protocol/uplim/api/v1/metadata_pb.ts +305 -0
- package/src/protocol/uplim/api/v1/public-buckets_pb.ts +83 -0
- package/src/protocol/uplim/api/v1/public-uploads_pb.ts +543 -0
- package/src/protocol/uplim/api/v1/upload-aliases_pb.ts +468 -0
- package/src/protocol/uplim/api/v1/uploads_pb.ts +4294 -0
- package/src/protocol/uplim/workflow/v1/activities_pb.ts +488 -0
- package/src/protocol/uplim/workflow/v1/integration_queue_admin_pb.ts +594 -0
- package/src/protocol/uplim/workflow/v1/integration_queue_pb.ts +353 -0
- package/src/protocol/uplim/workflow/v1/workflows_pb.ts +746 -0
- package/src/rpc-clients.ts +29 -0
- package/src/sse-client.ts +83 -0
- package/src/types.ts +169 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xeonr/upload-pool-sdk — self-hosted worker SDK for the upl.im content
|
|
3
|
+
* type pipeline.
|
|
4
|
+
*
|
|
5
|
+
* Minimum viable worker:
|
|
6
|
+
*
|
|
7
|
+
* import { createPool } from "@xeonr/upload-pool-sdk";
|
|
8
|
+
*
|
|
9
|
+
* await createPool({
|
|
10
|
+
* token: process.env.UPL_POOL_TOKEN!,
|
|
11
|
+
* endpoint: process.env.UPL_API_URL!,
|
|
12
|
+
* handlers: {
|
|
13
|
+
* "my-integration:invoice": async (ctx) => {
|
|
14
|
+
* const buf = await ctx.downloadBuffer();
|
|
15
|
+
* const thumb = await renderInvoiceThumbnail(buf);
|
|
16
|
+
* await ctx.uploadMeta({ type: "THUMBNAIL_LIGHT", data: thumb });
|
|
17
|
+
* },
|
|
18
|
+
* },
|
|
19
|
+
* }).start();
|
|
20
|
+
*/
|
|
21
|
+
import { Pool } from "./pool.js";
|
|
22
|
+
import type { PoolConfig } from "./types.js";
|
|
23
|
+
|
|
24
|
+
export { Pool } from "./pool.js";
|
|
25
|
+
export { NonRetryableError } from "./errors.js";
|
|
26
|
+
export type {
|
|
27
|
+
PoolConfig,
|
|
28
|
+
JobContext,
|
|
29
|
+
JobHandler,
|
|
30
|
+
UploadMetaOpts,
|
|
31
|
+
UploadMetadataPartial,
|
|
32
|
+
UploadMetadataProto,
|
|
33
|
+
FolderContext,
|
|
34
|
+
PoolLifecycleEvents,
|
|
35
|
+
PresignedUploadRequest,
|
|
36
|
+
MetaUploadHandle,
|
|
37
|
+
} from "./types.js";
|
|
38
|
+
|
|
39
|
+
export function createPool(config: PoolConfig): Pool {
|
|
40
|
+
return new Pool(config);
|
|
41
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JobContext implementation. Wraps the four InternalUploadsService RPCs
|
|
3
|
+
* + the source download with ergonomic helpers handlers actually want.
|
|
4
|
+
*
|
|
5
|
+
* All mutations are scoped to a single upload by the per-job update_token
|
|
6
|
+
* embedded in the job envelope.
|
|
7
|
+
*/
|
|
8
|
+
import { writeFile } from "node:fs/promises";
|
|
9
|
+
import { create } from "@bufbuild/protobuf";
|
|
10
|
+
import {
|
|
11
|
+
ConfirmMetaUploadRequestSchema,
|
|
12
|
+
InternalUpdateUploadRequestSchema,
|
|
13
|
+
InternalUpdateUploadRequest_AiMetadataSchema,
|
|
14
|
+
MetaTypeSchema,
|
|
15
|
+
MetaUploadType,
|
|
16
|
+
RequestMetaUploadRequestSchema,
|
|
17
|
+
} from "./protocol/uplim/api/v1/uploads_pb.js";
|
|
18
|
+
import { UploadMetadataSchema } from "./protocol/uplim/api/v1/metadata_pb.js";
|
|
19
|
+
import type { RpcClients } from "./rpc-clients.js";
|
|
20
|
+
import type {
|
|
21
|
+
FolderContext,
|
|
22
|
+
JobContext,
|
|
23
|
+
PresignedUploadRequest,
|
|
24
|
+
UploadMetadataPartial,
|
|
25
|
+
UploadMetadataProto,
|
|
26
|
+
UploadMetaOpts,
|
|
27
|
+
} from "./types.js";
|
|
28
|
+
|
|
29
|
+
const META_TYPE_MAP: Record<UploadMetaOpts["type"], MetaUploadType> = {
|
|
30
|
+
THUMBNAIL_LIGHT: MetaUploadType.MetaUploadType_THUMBNAIL_LIGHT,
|
|
31
|
+
THUMBNAIL_DARK: MetaUploadType.MetaUploadType_THUMBNAIL_DARK,
|
|
32
|
+
VIDEO_TIMELINE: MetaUploadType.MetaUploadType_VIDEO_TIMELINE_N,
|
|
33
|
+
ARCHIVE_FILE: MetaUploadType.MetaUploadType_ARCHIVE_FILE,
|
|
34
|
+
IMAGE_COMPAT: MetaUploadType.MetaUploadType_IMAGE_COMPAT,
|
|
35
|
+
AI_CONTENT: MetaUploadType.MetaUploadType_AI_CONTENT,
|
|
36
|
+
RENDERER_CONFIG: MetaUploadType.MetaUploadType_RENDERER_CONFIG,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export interface JobEnvelope {
|
|
40
|
+
jobId: string;
|
|
41
|
+
uploadId: string;
|
|
42
|
+
sourceUrl: string;
|
|
43
|
+
filename: string;
|
|
44
|
+
mimeType: string;
|
|
45
|
+
updateToken: string;
|
|
46
|
+
contentTypeContext: {
|
|
47
|
+
urn: string;
|
|
48
|
+
contentTypeId: string;
|
|
49
|
+
config?: string; // base64-encoded
|
|
50
|
+
};
|
|
51
|
+
folderContext?: FolderContext;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function createJobContext(
|
|
55
|
+
envelope: JobEnvelope,
|
|
56
|
+
rpc: RpcClients,
|
|
57
|
+
): JobContext {
|
|
58
|
+
const ctx: JobContext = {
|
|
59
|
+
jobId: envelope.jobId,
|
|
60
|
+
uploadId: envelope.uploadId,
|
|
61
|
+
filename: envelope.filename,
|
|
62
|
+
mimeType: envelope.mimeType,
|
|
63
|
+
contentType: {
|
|
64
|
+
urn: envelope.contentTypeContext.urn,
|
|
65
|
+
id: envelope.contentTypeContext.contentTypeId,
|
|
66
|
+
config: envelope.contentTypeContext.config
|
|
67
|
+
? Buffer.from(envelope.contentTypeContext.config, "base64")
|
|
68
|
+
: new Uint8Array(),
|
|
69
|
+
},
|
|
70
|
+
folderContext: envelope.folderContext,
|
|
71
|
+
sourceUrl: envelope.sourceUrl,
|
|
72
|
+
|
|
73
|
+
async download() {
|
|
74
|
+
const resp = await fetch(envelope.sourceUrl);
|
|
75
|
+
if (!resp.ok || !resp.body) {
|
|
76
|
+
throw new Error(`source download failed: ${resp.status} ${resp.statusText}`);
|
|
77
|
+
}
|
|
78
|
+
return resp.body;
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
async downloadBuffer() {
|
|
82
|
+
const resp = await fetch(envelope.sourceUrl);
|
|
83
|
+
if (!resp.ok) {
|
|
84
|
+
throw new Error(`source download failed: ${resp.status} ${resp.statusText}`);
|
|
85
|
+
}
|
|
86
|
+
const buf = await resp.arrayBuffer();
|
|
87
|
+
return new Uint8Array(buf);
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
async downloadToFile(path: string) {
|
|
91
|
+
const data = await ctx.downloadBuffer();
|
|
92
|
+
await writeFile(path, data);
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
async uploadMeta(opts: UploadMetaOpts) {
|
|
96
|
+
const protoType = META_TYPE_MAP[opts.type];
|
|
97
|
+
const metaType = create(MetaTypeSchema, {
|
|
98
|
+
type: protoType,
|
|
99
|
+
n: opts.instance,
|
|
100
|
+
filename: opts.filename,
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// 1. RequestMetaUpload → presigned URL.
|
|
104
|
+
const requested = await rpc.internalUploads.requestMetaUpload(
|
|
105
|
+
create(RequestMetaUploadRequestSchema, {
|
|
106
|
+
updateToken: envelope.updateToken,
|
|
107
|
+
metaType: [metaType],
|
|
108
|
+
}),
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
const meta = requested.metaUploads[0];
|
|
112
|
+
if (!meta) {
|
|
113
|
+
throw new Error("RequestMetaUpload returned no meta_uploads");
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// 2. S3 PUT.
|
|
117
|
+
const contentType = opts.contentType ?? inferContentType(opts.type);
|
|
118
|
+
const body = opts.data instanceof Uint8Array
|
|
119
|
+
? opts.data
|
|
120
|
+
: opts.data;
|
|
121
|
+
const putResp = await fetch(meta.uploadUrl, {
|
|
122
|
+
method: "PUT",
|
|
123
|
+
body: body as BodyInit,
|
|
124
|
+
headers: { "Content-Type": contentType },
|
|
125
|
+
duplex: "half",
|
|
126
|
+
} as RequestInit & { duplex?: "half" });
|
|
127
|
+
if (!putResp.ok) {
|
|
128
|
+
throw new Error(`meta upload PUT failed: ${putResp.status} ${putResp.statusText}`);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// 3. ConfirmMetaUpload.
|
|
132
|
+
await rpc.internalUploads.confirmMetaUpload(
|
|
133
|
+
create(ConfirmMetaUploadRequestSchema, {
|
|
134
|
+
updateToken: envelope.updateToken,
|
|
135
|
+
metadataId: [meta.metadataId],
|
|
136
|
+
}),
|
|
137
|
+
);
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
async setMetadata(metadata: UploadMetadataPartial | UploadMetadataProto) {
|
|
141
|
+
// Distinguish a pre-built proto from a partial: protos carry the
|
|
142
|
+
// @bufbuild/protobuf $typeName brand.
|
|
143
|
+
const isProto = (metadata as UploadMetadataProto).$typeName !== undefined;
|
|
144
|
+
let protoMetadata: ReturnType<typeof create<typeof UploadMetadataSchema>>;
|
|
145
|
+
let thumbnailVersion: number | undefined;
|
|
146
|
+
if (isProto) {
|
|
147
|
+
protoMetadata = metadata as ReturnType<typeof create<typeof UploadMetadataSchema>>;
|
|
148
|
+
} else {
|
|
149
|
+
const partial = metadata as UploadMetadataPartial;
|
|
150
|
+
protoMetadata = create(UploadMetadataSchema, {});
|
|
151
|
+
// Server-side proto has typed sub-messages; the SDK's
|
|
152
|
+
// UploadMetadataPartial is intentionally loose so workers can
|
|
153
|
+
// populate just what they computed. Cast into the proto via
|
|
154
|
+
// the JSON path — fields that don't map are ignored.
|
|
155
|
+
Object.assign(protoMetadata as object, partial);
|
|
156
|
+
thumbnailVersion = partial.thumbnailGenerationVersion;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
await rpc.internalUploads.updateUpload(
|
|
160
|
+
create(InternalUpdateUploadRequestSchema, {
|
|
161
|
+
updateToken: envelope.updateToken,
|
|
162
|
+
metadata: protoMetadata,
|
|
163
|
+
thumbnailGenerationVersion: thumbnailVersion,
|
|
164
|
+
}),
|
|
165
|
+
);
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
async markHasThumbnail(version: number) {
|
|
169
|
+
await rpc.internalUploads.updateUpload(
|
|
170
|
+
create(InternalUpdateUploadRequestSchema, {
|
|
171
|
+
updateToken: envelope.updateToken,
|
|
172
|
+
hasThumbnail: true,
|
|
173
|
+
thumbnailGenerationVersion: version,
|
|
174
|
+
}),
|
|
175
|
+
);
|
|
176
|
+
},
|
|
177
|
+
|
|
178
|
+
async setDescription(text: string, tags?: string[]) {
|
|
179
|
+
await rpc.internalUploads.updateUpload(
|
|
180
|
+
create(InternalUpdateUploadRequestSchema, {
|
|
181
|
+
updateToken: envelope.updateToken,
|
|
182
|
+
aiMetadata: create(InternalUpdateUploadRequest_AiMetadataSchema, {
|
|
183
|
+
description: text,
|
|
184
|
+
generatedTags: tags ?? [],
|
|
185
|
+
}),
|
|
186
|
+
}),
|
|
187
|
+
);
|
|
188
|
+
},
|
|
189
|
+
|
|
190
|
+
async withPresignedUploads<T>(
|
|
191
|
+
opts: PresignedUploadRequest[],
|
|
192
|
+
callback: (handles: import("./types.js").MetaUploadHandle[]) => Promise<T>,
|
|
193
|
+
): Promise<T> {
|
|
194
|
+
const metaTypes = opts.map((opt) => create(MetaTypeSchema, {
|
|
195
|
+
type: META_TYPE_MAP[opt.type],
|
|
196
|
+
n: opt.instance,
|
|
197
|
+
filename: opt.filename,
|
|
198
|
+
}));
|
|
199
|
+
const requested = await rpc.internalUploads.requestMetaUpload(
|
|
200
|
+
create(RequestMetaUploadRequestSchema, {
|
|
201
|
+
updateToken: envelope.updateToken,
|
|
202
|
+
metaType: metaTypes,
|
|
203
|
+
}),
|
|
204
|
+
);
|
|
205
|
+
if (requested.metaUploads.length !== opts.length) {
|
|
206
|
+
throw new Error(
|
|
207
|
+
`RequestMetaUpload returned ${requested.metaUploads.length} URLs, expected ${opts.length}`,
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
const handles = requested.metaUploads.map((m) => ({
|
|
211
|
+
uploadUrl: m.uploadUrl,
|
|
212
|
+
downloadUrl: m.downloadUrl,
|
|
213
|
+
metadataId: m.metadataId,
|
|
214
|
+
}));
|
|
215
|
+
const result = await callback(handles);
|
|
216
|
+
// Confirm only after the callback resolves cleanly — on throw,
|
|
217
|
+
// the rows stay unfinalised and will be cleaned up by the next
|
|
218
|
+
// confirm sweep or expire naturally.
|
|
219
|
+
await rpc.internalUploads.confirmMetaUpload(
|
|
220
|
+
create(ConfirmMetaUploadRequestSchema, {
|
|
221
|
+
updateToken: envelope.updateToken,
|
|
222
|
+
metadataId: requested.metaUploads.map((m) => m.metadataId),
|
|
223
|
+
}),
|
|
224
|
+
);
|
|
225
|
+
return result;
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
return ctx;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function inferContentType(metaType: UploadMetaOpts["type"]): string {
|
|
233
|
+
switch (metaType) {
|
|
234
|
+
case "THUMBNAIL_LIGHT":
|
|
235
|
+
case "THUMBNAIL_DARK":
|
|
236
|
+
case "VIDEO_TIMELINE":
|
|
237
|
+
case "IMAGE_COMPAT":
|
|
238
|
+
return "image/png";
|
|
239
|
+
case "ARCHIVE_FILE":
|
|
240
|
+
case "AI_CONTENT":
|
|
241
|
+
case "RENDERER_CONFIG":
|
|
242
|
+
return "application/octet-stream";
|
|
243
|
+
}
|
|
244
|
+
}
|
package/src/pool.ts
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pool: the SDK's top-level lifecycle object. Maintains an SSE connection
|
|
3
|
+
* to the pool's job stream, dispatches job:dispatch events to the right
|
|
4
|
+
* handler keyed by content type URN, and orchestrates accept/complete/
|
|
5
|
+
* report-error against IntegrationQueueService.
|
|
6
|
+
*/
|
|
7
|
+
import { hostname } from "node:os";
|
|
8
|
+
import { randomBytes } from "node:crypto";
|
|
9
|
+
import { create } from "@bufbuild/protobuf";
|
|
10
|
+
import {
|
|
11
|
+
AcceptJobRequestSchema,
|
|
12
|
+
CompleteJobRequestSchema,
|
|
13
|
+
ReportErrorRequestSchema,
|
|
14
|
+
} from "./protocol/uplim/workflow/v1/integration_queue_pb.js";
|
|
15
|
+
import { createRpcClients, type RpcClients } from "./rpc-clients.js";
|
|
16
|
+
import { SseClient } from "./sse-client.js";
|
|
17
|
+
import { createJobContext, type JobEnvelope } from "./job-context.js";
|
|
18
|
+
import { NonRetryableError } from "./errors.js";
|
|
19
|
+
import type {
|
|
20
|
+
JobContext,
|
|
21
|
+
JobHandler,
|
|
22
|
+
PoolConfig,
|
|
23
|
+
} from "./types.js";
|
|
24
|
+
|
|
25
|
+
export class Pool {
|
|
26
|
+
private readonly config: PoolConfig;
|
|
27
|
+
private readonly rpc: RpcClients;
|
|
28
|
+
private readonly sse: SseClient;
|
|
29
|
+
private inFlight = 0;
|
|
30
|
+
private readonly workerId: string;
|
|
31
|
+
private readonly capabilities: string[];
|
|
32
|
+
|
|
33
|
+
constructor(config: PoolConfig) {
|
|
34
|
+
this.config = {
|
|
35
|
+
concurrency: 1,
|
|
36
|
+
onError: defaultErrorHandler,
|
|
37
|
+
...config,
|
|
38
|
+
};
|
|
39
|
+
this.workerId = config.workerId ?? `${hostname()}-${randomBytes(4).toString("hex")}`;
|
|
40
|
+
this.capabilities = Object.keys(config.handlers);
|
|
41
|
+
this.rpc = createRpcClients(config.endpoint);
|
|
42
|
+
this.sse = new SseClient({
|
|
43
|
+
endpoint: config.endpoint,
|
|
44
|
+
token: config.token,
|
|
45
|
+
workerId: this.workerId,
|
|
46
|
+
capabilities: this.capabilities,
|
|
47
|
+
onConnected: () => {
|
|
48
|
+
/* lifecycle: future event emitter hook */
|
|
49
|
+
},
|
|
50
|
+
onDisconnected: () => {
|
|
51
|
+
/* lifecycle: future event emitter hook */
|
|
52
|
+
},
|
|
53
|
+
onJobDispatch: (payload) => this.handleDispatch(payload as JobEnvelope),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async start(): Promise<void> {
|
|
58
|
+
this.sse.start();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async stop(): Promise<void> {
|
|
62
|
+
this.sse.stop();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private async handleDispatch(envelope: JobEnvelope): Promise<void> {
|
|
66
|
+
if (this.inFlight >= (this.config.concurrency ?? 1)) {
|
|
67
|
+
// Pipeline only dispatches to idle workers (zero in-flight), so
|
|
68
|
+
// this branch is defensive — if it ever fires we silently
|
|
69
|
+
// drop the dispatch and let the pipeline timeout requeue.
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.inFlight++;
|
|
73
|
+
|
|
74
|
+
const handler = this.resolveHandler(envelope.contentTypeContext.urn);
|
|
75
|
+
const ctx = createJobContext(envelope, this.rpc);
|
|
76
|
+
|
|
77
|
+
try {
|
|
78
|
+
// AcceptJob — clears the pipeline's accept-timeout.
|
|
79
|
+
await this.rpc.integrationQueue.acceptJob(
|
|
80
|
+
create(AcceptJobRequestSchema, {
|
|
81
|
+
jobId: envelope.jobId,
|
|
82
|
+
workerId: this.workerId,
|
|
83
|
+
queueToken: this.config.token,
|
|
84
|
+
}),
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
if (!handler) {
|
|
88
|
+
await this.reportError(
|
|
89
|
+
envelope.jobId,
|
|
90
|
+
ctx,
|
|
91
|
+
new NonRetryableError(`no handler for URN ${envelope.contentTypeContext.urn}`),
|
|
92
|
+
);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
await handler(ctx);
|
|
97
|
+
|
|
98
|
+
await this.rpc.integrationQueue.completeJob(
|
|
99
|
+
create(CompleteJobRequestSchema, {
|
|
100
|
+
jobId: envelope.jobId,
|
|
101
|
+
workerId: this.workerId,
|
|
102
|
+
queueToken: this.config.token,
|
|
103
|
+
}),
|
|
104
|
+
);
|
|
105
|
+
} catch (err) {
|
|
106
|
+
await this.reportError(envelope.jobId, ctx, err as Error);
|
|
107
|
+
} finally {
|
|
108
|
+
this.inFlight--;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
private resolveHandler(urn: string): JobHandler | undefined {
|
|
113
|
+
return this.config.handlers[urn] ?? this.config.onUnhandled;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
private async reportError(
|
|
117
|
+
jobId: string,
|
|
118
|
+
ctx: JobContext,
|
|
119
|
+
err: Error,
|
|
120
|
+
): Promise<void> {
|
|
121
|
+
const retry = !(err instanceof NonRetryableError);
|
|
122
|
+
this.config.onError?.(err, ctx);
|
|
123
|
+
try {
|
|
124
|
+
await this.rpc.integrationQueue.reportError(
|
|
125
|
+
create(ReportErrorRequestSchema, {
|
|
126
|
+
jobId,
|
|
127
|
+
workerId: this.workerId,
|
|
128
|
+
queueToken: this.config.token,
|
|
129
|
+
error: err.message,
|
|
130
|
+
retry,
|
|
131
|
+
}),
|
|
132
|
+
);
|
|
133
|
+
} catch (rptErr) {
|
|
134
|
+
this.config.onError?.(rptErr as Error, ctx);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function defaultErrorHandler(err: Error, ctx?: JobContext): void {
|
|
140
|
+
const where = ctx ? `job ${ctx.jobId} (${ctx.contentType.urn})` : "pool";
|
|
141
|
+
// eslint-disable-next-line no-console
|
|
142
|
+
console.error(`[@xeonr/upload-pool-sdk] ${where}: ${err.message}`);
|
|
143
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
// Copyright 2023 Buf Technologies, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
// @generated by protoc-gen-es v2.10.1 with parameter "target=ts,import_extension=.js"
|
|
16
|
+
// @generated from file buf/validate/expression.proto (package buf.validate, syntax proto3)
|
|
17
|
+
/* eslint-disable */
|
|
18
|
+
|
|
19
|
+
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
20
|
+
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
21
|
+
import type { Message } from "@bufbuild/protobuf";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Describes the file buf/validate/expression.proto.
|
|
25
|
+
*/
|
|
26
|
+
export const file_buf_validate_expression: GenFile = /*@__PURE__*/
|
|
27
|
+
fileDesc("Ch1idWYvdmFsaWRhdGUvZXhwcmVzc2lvbi5wcm90bxIMYnVmLnZhbGlkYXRlIj0KCkNvbnN0cmFpbnQSCgoCaWQYASABKAkSDwoHbWVzc2FnZRgCIAEoCRISCgpleHByZXNzaW9uGAMgASgJIjkKClZpb2xhdGlvbnMSKwoKdmlvbGF0aW9ucxgBIAMoCzIXLmJ1Zi52YWxpZGF0ZS5WaW9sYXRpb24iWAoJVmlvbGF0aW9uEhIKCmZpZWxkX3BhdGgYASABKAkSFQoNY29uc3RyYWludF9pZBgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEg8KB2Zvcl9rZXkYBCABKAhCvQEKEGNvbS5idWYudmFsaWRhdGVCD0V4cHJlc3Npb25Qcm90b1ABWkdidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3Byb3RvdmFsaWRhdGUvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi92YWxpZGF0ZaICA0JWWKoCDEJ1Zi5WYWxpZGF0ZcoCDEJ1ZlxWYWxpZGF0ZeICGEJ1ZlxWYWxpZGF0ZVxHUEJNZXRhZGF0YeoCDUJ1Zjo6VmFsaWRhdGViBnByb3RvMw");
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* `Constraint` represents a validation rule written in the Common Expression
|
|
31
|
+
* Language (CEL) syntax. Each Constraint includes a unique identifier, an
|
|
32
|
+
* optional error message, and the CEL expression to evaluate. For more
|
|
33
|
+
* information on CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).
|
|
34
|
+
*
|
|
35
|
+
* ```proto
|
|
36
|
+
* message Foo {
|
|
37
|
+
* option (buf.validate.message).cel = {
|
|
38
|
+
* id: "foo.bar"
|
|
39
|
+
* message: "bar must be greater than 0"
|
|
40
|
+
* expression: "this.bar > 0"
|
|
41
|
+
* };
|
|
42
|
+
* int32 bar = 1;
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @generated from message buf.validate.Constraint
|
|
47
|
+
*/
|
|
48
|
+
export type Constraint = Message<"buf.validate.Constraint"> & {
|
|
49
|
+
/**
|
|
50
|
+
* `id` is a string that serves as a machine-readable name for this Constraint.
|
|
51
|
+
* It should be unique within its scope, which could be either a message or a field.
|
|
52
|
+
*
|
|
53
|
+
* @generated from field: string id = 1;
|
|
54
|
+
*/
|
|
55
|
+
id: string;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* `message` is an optional field that provides a human-readable error message
|
|
59
|
+
* for this Constraint when the CEL expression evaluates to false. If a
|
|
60
|
+
* non-empty message is provided, any strings resulting from the CEL
|
|
61
|
+
* expression evaluation are ignored.
|
|
62
|
+
*
|
|
63
|
+
* @generated from field: string message = 2;
|
|
64
|
+
*/
|
|
65
|
+
message: string;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* `expression` is the actual CEL expression that will be evaluated for
|
|
69
|
+
* validation. This string must resolve to either a boolean or a string
|
|
70
|
+
* value. If the expression evaluates to false or a non-empty string, the
|
|
71
|
+
* validation is considered failed, and the message is rejected.
|
|
72
|
+
*
|
|
73
|
+
* @generated from field: string expression = 3;
|
|
74
|
+
*/
|
|
75
|
+
expression: string;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Describes the message buf.validate.Constraint.
|
|
80
|
+
* Use `create(ConstraintSchema)` to create a new message.
|
|
81
|
+
*/
|
|
82
|
+
export const ConstraintSchema: GenMessage<Constraint> = /*@__PURE__*/
|
|
83
|
+
messageDesc(file_buf_validate_expression, 0);
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* `Violations` is a collection of `Violation` messages. This message type is returned by
|
|
87
|
+
* protovalidate when a proto message fails to meet the requirements set by the `Constraint` validation rules.
|
|
88
|
+
* Each individual violation is represented by a `Violation` message.
|
|
89
|
+
*
|
|
90
|
+
* @generated from message buf.validate.Violations
|
|
91
|
+
*/
|
|
92
|
+
export type Violations = Message<"buf.validate.Violations"> & {
|
|
93
|
+
/**
|
|
94
|
+
* `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected.
|
|
95
|
+
*
|
|
96
|
+
* @generated from field: repeated buf.validate.Violation violations = 1;
|
|
97
|
+
*/
|
|
98
|
+
violations: Violation[];
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Describes the message buf.validate.Violations.
|
|
103
|
+
* Use `create(ViolationsSchema)` to create a new message.
|
|
104
|
+
*/
|
|
105
|
+
export const ViolationsSchema: GenMessage<Violations> = /*@__PURE__*/
|
|
106
|
+
messageDesc(file_buf_validate_expression, 1);
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* `Violation` represents a single instance where a validation rule, expressed
|
|
110
|
+
* as a `Constraint`, was not met. It provides information about the field that
|
|
111
|
+
* caused the violation, the specific constraint that wasn't fulfilled, and a
|
|
112
|
+
* human-readable error message.
|
|
113
|
+
*
|
|
114
|
+
* ```json
|
|
115
|
+
* {
|
|
116
|
+
* "fieldPath": "bar",
|
|
117
|
+
* "constraintId": "foo.bar",
|
|
118
|
+
* "message": "bar must be greater than 0"
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* @generated from message buf.validate.Violation
|
|
123
|
+
*/
|
|
124
|
+
export type Violation = Message<"buf.validate.Violation"> & {
|
|
125
|
+
/**
|
|
126
|
+
* `field_path` is a machine-readable identifier that points to the specific field that failed the validation.
|
|
127
|
+
* This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation.
|
|
128
|
+
*
|
|
129
|
+
* @generated from field: string field_path = 1;
|
|
130
|
+
*/
|
|
131
|
+
fieldPath: string;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* `constraint_id` is the unique identifier of the `Constraint` that was not fulfilled.
|
|
135
|
+
* This is the same `id` that was specified in the `Constraint` message, allowing easy tracing of which rule was violated.
|
|
136
|
+
*
|
|
137
|
+
* @generated from field: string constraint_id = 2;
|
|
138
|
+
*/
|
|
139
|
+
constraintId: string;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* `message` is a human-readable error message that describes the nature of the violation.
|
|
143
|
+
* This can be the default error message from the violated `Constraint`, or it can be a custom message that gives more context about the violation.
|
|
144
|
+
*
|
|
145
|
+
* @generated from field: string message = 3;
|
|
146
|
+
*/
|
|
147
|
+
message: string;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* `for_key` indicates whether the violation was caused by a map key, rather than a value.
|
|
151
|
+
*
|
|
152
|
+
* @generated from field: bool for_key = 4;
|
|
153
|
+
*/
|
|
154
|
+
forKey: boolean;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Describes the message buf.validate.Violation.
|
|
159
|
+
* Use `create(ViolationSchema)` to create a new message.
|
|
160
|
+
*/
|
|
161
|
+
export const ViolationSchema: GenMessage<Violation> = /*@__PURE__*/
|
|
162
|
+
messageDesc(file_buf_validate_expression, 2);
|
|
163
|
+
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Copyright 2023 Buf Technologies, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
// @generated by protoc-gen-es v2.10.1 with parameter "target=ts,import_extension=.js"
|
|
16
|
+
// @generated from file buf/validate/priv/private.proto (package buf.validate.priv, syntax proto3)
|
|
17
|
+
/* eslint-disable */
|
|
18
|
+
|
|
19
|
+
import type { GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
20
|
+
import { extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
21
|
+
import type { FieldOptions } from "@bufbuild/protobuf/wkt";
|
|
22
|
+
import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt";
|
|
23
|
+
import type { Message } from "@bufbuild/protobuf";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Describes the file buf/validate/priv/private.proto.
|
|
27
|
+
*/
|
|
28
|
+
export const file_buf_validate_priv_private: GenFile = /*@__PURE__*/
|
|
29
|
+
fileDesc("Ch9idWYvdmFsaWRhdGUvcHJpdi9wcml2YXRlLnByb3RvEhFidWYudmFsaWRhdGUucHJpdiI+ChBGaWVsZENvbnN0cmFpbnRzEioKA2NlbBgBIAMoCzIdLmJ1Zi52YWxpZGF0ZS5wcml2LkNvbnN0cmFpbnQiPQoKQ29uc3RyYWludBIKCgJpZBgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhIKCmV4cHJlc3Npb24YAyABKAk6XAoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIgJIAEoCzIjLmJ1Zi52YWxpZGF0ZS5wcml2LkZpZWxkQ29uc3RyYWludHNSBWZpZWxkiAEBQtkBChVjb20uYnVmLnZhbGlkYXRlLnByaXZCDFByaXZhdGVQcm90b1ABWkxidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3Byb3RvdmFsaWRhdGUvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi92YWxpZGF0ZS9wcml2ogIDQlZQqgIRQnVmLlZhbGlkYXRlLlByaXbKAhFCdWZcVmFsaWRhdGVcUHJpduICHUJ1ZlxWYWxpZGF0ZVxQcml2XEdQQk1ldGFkYXRh6gITQnVmOjpWYWxpZGF0ZTo6UHJpdmIGcHJvdG8z", [file_google_protobuf_descriptor]);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Do not use. Internal to protovalidate library
|
|
33
|
+
*
|
|
34
|
+
* @generated from message buf.validate.priv.FieldConstraints
|
|
35
|
+
*/
|
|
36
|
+
export type FieldConstraints = Message<"buf.validate.priv.FieldConstraints"> & {
|
|
37
|
+
/**
|
|
38
|
+
* @generated from field: repeated buf.validate.priv.Constraint cel = 1;
|
|
39
|
+
*/
|
|
40
|
+
cel: Constraint[];
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Describes the message buf.validate.priv.FieldConstraints.
|
|
45
|
+
* Use `create(FieldConstraintsSchema)` to create a new message.
|
|
46
|
+
*/
|
|
47
|
+
export const FieldConstraintsSchema: GenMessage<FieldConstraints> = /*@__PURE__*/
|
|
48
|
+
messageDesc(file_buf_validate_priv_private, 0);
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Do not use. Internal to protovalidate library
|
|
52
|
+
*
|
|
53
|
+
* @generated from message buf.validate.priv.Constraint
|
|
54
|
+
*/
|
|
55
|
+
export type Constraint = Message<"buf.validate.priv.Constraint"> & {
|
|
56
|
+
/**
|
|
57
|
+
* @generated from field: string id = 1;
|
|
58
|
+
*/
|
|
59
|
+
id: string;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @generated from field: string message = 2;
|
|
63
|
+
*/
|
|
64
|
+
message: string;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @generated from field: string expression = 3;
|
|
68
|
+
*/
|
|
69
|
+
expression: string;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Describes the message buf.validate.priv.Constraint.
|
|
74
|
+
* Use `create(ConstraintSchema)` to create a new message.
|
|
75
|
+
*/
|
|
76
|
+
export const ConstraintSchema: GenMessage<Constraint> = /*@__PURE__*/
|
|
77
|
+
messageDesc(file_buf_validate_priv_private, 1);
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Do not use. Internal to protovalidate library
|
|
81
|
+
*
|
|
82
|
+
* @generated from extension: optional buf.validate.priv.FieldConstraints field = 1160;
|
|
83
|
+
*/
|
|
84
|
+
export const field: GenExtension<FieldOptions, FieldConstraints> = /*@__PURE__*/
|
|
85
|
+
extDesc(file_buf_validate_priv_private, 0);
|
|
86
|
+
|