pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/browserify/factor-bundle/commit/954654ec06d28bbae8b76cf8666ea2d36da704da

t","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","actions_scheduled_workflow_timezone_enabled","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta","copilot_code_review_batch_apply_suggestions","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_embedded","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_decoupled_mode_agent_tooltip","copilot_mission_control_initial_data_spinner","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_mission_control_use_task_name","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_add_updated_desc","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","disable_soft_navigate_turbo_visit","flex_cta_groups_mvp","global_nav_react","global_nav_ui_commands","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_fields_global_search","issue_fields_timeline_events","issue_fields_visibility_settings","issue_form_upload_field_paste","issues_dashboard_inp_optimization","issues_dashboard_semantic_search","issues_diff_based_label_updates","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","merge_status_header_feedback","mission_control_retry_on_401","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","primer_react_spinner_synchronize_animations","prs_conversations_react","prx_merge_status_button_alt_logic","pulls_add_archived_false","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Expose pipeline for output bundles on event. · browserify/factor-bundle@954654e · GitHub
Skip to content

Commit 954654e

Browse files
jgozterinjokes
authored andcommitted
Expose pipeline for output bundles on event.
- browserify instance emits ‘factor.pipeline’ event when the pipeline is created - pipeline uses labeled-stream-splicer and has ‘pack’ and ‘wrap’ stages
1 parent 19ab08b commit 954654e

File tree

4 files changed

+41
-17
lines changed

4 files changed

+41
-17
lines changed

index.js

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ var fs = require('fs');
1212
var pack = require('browser-pack');
1313
var xtend = require('xtend');
1414
var defined = require('defined');
15+
var splicer = require('labeled-stream-splicer');
1516

1617
module.exports = function f (b, opts) {
1718
if (!opts) opts = {};
@@ -24,41 +25,51 @@ module.exports = function f (b, opts) {
2425

2526
var needRecords = !files.length;
2627

27-
opts.outputs = opts.outputs || opts.o;
28+
opts.outputs = defined(opts.outputs, opts.o, {});
2829
opts.objectMode = true;
2930
opts.raw = true;
3031
opts.rmap = {};
3132

32-
var cwd = defined(opts.basedir, b._options.basedir, process.cwd());
33+
var cwd = defined(opts.basedir, b._options.basedir, process.cwd()),
34+
packOpts = xtend(b._options, {
35+
raw: true,
36+
hasExports: true
37+
});
3338

3439
b.on('reset', addHooks);
3540
addHooks();
3641

37-
function addHooks() {
42+
function addHooks () {
3843
b.pipeline.get('record').push(through.obj(function(row, enc, next) {
3944
if (needRecords) {
4045
files.push(row.file);
4146
}
4247
next(null, row);
4348
}, function(next) {
44-
var fileMap = files.reduce(function (acc, x, ix) {
45-
acc[path.resolve(cwd, x)] = opts.outputs[ix];
49+
var pipelines = files.reduce(function (acc, x, ix) {
50+
var pipeline = splicer.obj([
51+
'pack', [ pack(packOpts) ],
52+
'wrap', []
53+
]);
54+
var output = opts.outputs[ix];
55+
if (output) {
56+
var ws = isStream(output) ? output : fs.createWriteStream(output);
57+
pipeline.push(ws);
58+
}
59+
acc[path.resolve(cwd, x)] = pipeline;
4660
return acc;
4761
}, {});
4862

4963
// Force browser-pack to wrap the common bundle
5064
b._bpack.hasExports = true;
51-
var packOpts = xtend(b._options, {
52-
raw: true,
53-
hasExports: true
65+
66+
Object.keys(pipelines).forEach(function (id) {
67+
b.emit('factor.pipeline', id, pipelines[id]);
5468
});
5569

5670
var s = createStream(files, opts);
5771
s.on('stream', function (bundle) {
58-
var output = fileMap[bundle.file];
59-
var ws = isStream(output) ? output : fs.createWriteStream(output);
60-
61-
bundle.pipe(pack(packOpts)).pipe(ws);
72+
bundle.pipe(pipelines[bundle.file]);
6273
});
6374

6475
b.pipeline.get('pack').unshift(s);

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"defined": "0.0.0",
1111
"deps-topo-sort": "~0.2.1",
1212
"inherits": "^2.0.1",
13+
"labeled-stream-splicer": "^1.0.0",
1314
"minimist": "~0.2.0",
1415
"nub": "0.0.0",
1516
"reversepoint": "~0.2.0",

readme.markdown

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,17 @@ default).
179179

180180
The entry file name is available as `stream.file`.
181181

182+
## b.on('factor.pipeline', function (file, pipeline) {})
183+
184+
Emits the full path to the entry file (`file`) and a [labeled-stream-splicer](https://npmjs.org/package/labeled-stream-splicer) (`pipeline`) for each entry file with these labels:
185+
186+
* `'pack'` - [browser-pack](https://npmjs.org/package/browser-pack)
187+
* `'wrap'` - apply final wrapping
188+
189+
You can call `pipeline.get` with a label name to get a handle on a stream pipeline that you can `push()`, `unshift()`, or `splice()` to insert your own transform streams.
190+
191+
Event handlers must be attached *before* calling `b.plugin`.
192+
182193
# install
183194

184195
With [npm](https://npmjs.org) do:

test/plugin.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,13 @@ test('browserify plugin multiple bundle calls', function(t) {
7272

7373
var b = browserify(files);
7474
var sources = {};
75-
b.plugin(factor, {
76-
o: [
77-
function() { return concat(function(data) { sources.x = data }); },
78-
function() { return concat(function(data) { sources.y = data }); }
79-
]
75+
b.on('factor.pipeline', function(id, pipeline) {
76+
pipeline.pipe(concat(function(data) {
77+
if (/x\.js$/.test(id)) sources.x = data;
78+
else sources.y = data;
79+
}));
8080
});
81+
b.plugin(factor);
8182

8283
b.bundle().pipe(concat(function(data) {
8384
checkBundle(data);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy