@pipeline-builder/pipeline-data 3.4.86 → 3.4.88

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.
@@ -0,0 +1,134 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { AccessModifier, ComputeType, PluginType, SYSTEM_ORG_ID } from '@pipeline-builder/api-core';
4
+ import { sql } from 'drizzle-orm';
5
+ import { boolean, integer, varchar, pgTable, text, timestamp, uuid, jsonb, index, uniqueIndex, check } from 'drizzle-orm/pg-core';
6
+ /**
7
+ * Table for storing reusable plugin configurations.
8
+ * Plugins define the behavior of synth/build steps in CDK pipelines.
9
+ *
10
+ * Features * - Versioning support with semantic versioning
11
+ * - Access control via orgId and accessModifier
12
+ * - Full audit trail (created/updated by/at)
13
+ * - Flexible metadata storage via JSONB
14
+ * - Support for both ShellStep and CodeBuildStep types
15
+ *
16
+ * @table plugins
17
+ */
18
+ export const plugin = pgTable('plugins', {
19
+ // Primary key
20
+ id: uuid('id').primaryKey().defaultRandom(),
21
+ // Organization and access control
22
+ orgId: varchar('org_id', { length: 255 })
23
+ .default(SYSTEM_ORG_ID)
24
+ .notNull(),
25
+ // Audit fields
26
+ createdBy: text('created_by')
27
+ .default(SYSTEM_ORG_ID)
28
+ .notNull(),
29
+ createdAt: timestamp('created_at', { withTimezone: true })
30
+ .defaultNow()
31
+ .notNull(),
32
+ updatedBy: text('updated_by')
33
+ .default(SYSTEM_ORG_ID)
34
+ .notNull(),
35
+ updatedAt: timestamp('updated_at', { withTimezone: true })
36
+ .defaultNow()
37
+ .notNull(),
38
+ // Core plugin information
39
+ name: varchar('name', { length: 255 })
40
+ .notNull(),
41
+ description: text('description'),
42
+ keywords: jsonb('keywords')
43
+ .$type()
44
+ .default([])
45
+ .notNull(),
46
+ version: varchar('version', { length: 50 })
47
+ .default('1.0.0')
48
+ .notNull(),
49
+ // Plugin classification
50
+ category: varchar('category', { length: 50 })
51
+ .default('unknown')
52
+ .notNull(),
53
+ // Plugin configuration
54
+ metadata: jsonb('metadata')
55
+ .$type()
56
+ .default({})
57
+ .notNull(),
58
+ pluginType: varchar('plugin_type', { length: 50 })
59
+ .$type()
60
+ .default('CodeBuildStep')
61
+ .notNull(),
62
+ computeType: varchar('compute_type', { length: 50 })
63
+ .$type()
64
+ .default('SMALL')
65
+ .notNull(),
66
+ timeout: integer('timeout'),
67
+ failureBehavior: varchar('failure_behavior', { length: 10 })
68
+ .$type()
69
+ .default('fail')
70
+ .notNull(),
71
+ secrets: jsonb('secrets')
72
+ .$type()
73
+ .default([])
74
+ .notNull(),
75
+ primaryOutputDirectory: varchar('primary_output_directory', { length: 28 }),
76
+ // Build configuration
77
+ env: jsonb('env')
78
+ .$type()
79
+ .default({})
80
+ .notNull(),
81
+ buildArgs: jsonb('build_args')
82
+ .$type()
83
+ .default({})
84
+ .notNull(),
85
+ installCommands: text('install_commands')
86
+ .array()
87
+ .default([])
88
+ .notNull(),
89
+ commands: text('commands')
90
+ .array()
91
+ .default([])
92
+ .notNull(),
93
+ // Docker configuration
94
+ dockerfile: text('dockerfile'),
95
+ buildType: varchar('build_type', { length: 20 })
96
+ .default('build_image')
97
+ .notNull(),
98
+ // Access and visibility
99
+ accessModifier: varchar('access_modifier', { length: 10 })
100
+ .$type()
101
+ .default('private')
102
+ .notNull(),
103
+ isDefault: boolean('is_default')
104
+ .default(false)
105
+ .notNull(),
106
+ isActive: boolean('is_active')
107
+ .default(true)
108
+ .notNull(),
109
+ // Deletion tracking (soft delete)
110
+ deletedAt: timestamp('deleted_at', { withTimezone: true }),
111
+ deletedBy: text('deleted_by'),
112
+ }, (table) => ({
113
+ // Indexes for common queries
114
+ nameIdx: index('plugin_name_idx').on(table.name),
115
+ orgIdIdx: index('plugin_org_id_idx').on(table.orgId),
116
+ versionIdx: index('plugin_version_idx').on(table.version),
117
+ activeIdx: index('plugin_active_idx').on(table.isActive),
118
+ createdAtIdx: index('plugin_created_at_idx').on(table.createdAt),
119
+ updatedAtIdx: index('plugin_updated_at_idx').on(table.updatedAt),
120
+ // Category index for filtering
121
+ categoryIdx: index('plugin_category_idx').on(table.category),
122
+ // Composite index for common access pattern (orgId + isActive)
123
+ orgActiveIdx: index('plugin_org_active_idx').on(table.orgId, table.isActive),
124
+ // Composite index for filtered queries (orgId + accessModifier + isActive)
125
+ orgAccessActiveIdx: index('plugin_org_access_active_idx').on(table.orgId, table.accessModifier, table.isActive),
126
+ // Partial index for active-only queries (smaller, faster than full index)
127
+ activeOnlyOrgIdx: index('plugin_active_only_org_idx').on(table.orgId, table.createdAt).where(sql `is_active = true`),
128
+ // Unique constraint on name + version + orgId
129
+ nameVersionOrgUnique: uniqueIndex('plugin_name_version_org_unique')
130
+ .on(table.name, table.version, table.orgId),
131
+ // Check constraints
132
+ versionCheck: check('plugin_version_check', sql `${table.version} ~ '^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$'`),
133
+ }));
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3NjaGVtYS9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBWWxJOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUU7SUFDdkMsY0FBYztJQUNkLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBRTNDLGtDQUFrQztJQUNsQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUN0QyxPQUFPLENBQUMsYUFBYSxDQUFDO1NBQ3RCLE9BQU8sRUFBRTtJQUVaLGVBQWU7SUFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMxQixPQUFPLENBQUMsYUFBYSxDQUFDO1NBQ3RCLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3ZELFVBQVUsRUFBRTtTQUNaLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzFCLE9B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QUErQjtJQUMvQixXQUFXLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFFNUQsK0RBQStEO0lBQy9ELFlBQVksRUFBRSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDO0lBRTVFLDJFQUEyRTtJQUMzRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFFL0csMEVBQTBFO0lBQzFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBLGtCQUFrQixDQUFDO0lBRW5ILDhDQUE4QztJQUM5QyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsZ0NBQWdDLENBQUM7U0FDaEUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO0lBRTdDLG9CQUFvQjtJQUNwQixZQUFZLEVBQUUsS0FBSyxDQUFFLHNCQUFzQixFQUN6QyxHQUFHLENBQUEsR0FBRyxLQUFLLENBQUMsT0FBTyxvRUFBb0UsQ0FDeEY7Q0FDRixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBBY2Nlc3NNb2RpZmllciwgQ29tcHV0ZVR5cGUsIFBsdWdpblR5cGUsIFNZU1RFTV9PUkdfSUQgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQgeyBib29sZWFuLCBpbnRlZ2VyLCB2YXJjaGFyLCBwZ1RhYmxlLCB0ZXh0LCB0aW1lc3RhbXAsIHV1aWQsIGpzb25iLCBpbmRleCwgdW5pcXVlSW5kZXgsIGNoZWNrIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSc7XG5cbi8qKlxuICogU2VjcmV0IHJlcXVpcmVtZW50IGZvciBhIHBsdWdpbi5cbiAqIERlY2xhcmVzIG5hbWVkIHNlY3JldHMgdGhlIHBsdWdpbiBleHBlY3RzIGF0IGJ1aWxkIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luU2VjcmV0IHtcbiAgbmFtZTogc3RyaW5nO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGFibGUgZm9yIHN0b3JpbmcgcmV1c2FibGUgcGx1Z2luIGNvbmZpZ3VyYXRpb25zLlxuICogUGx1Z2lucyBkZWZpbmUgdGhlIGJlaGF2aW9yIG9mIHN5bnRoL2J1aWxkIHN0ZXBzIGluIENESyBwaXBlbGluZXMuXG4gKlxuICogRmVhdHVyZXMgKiAtIFZlcnNpb25pbmcgc3VwcG9ydCB3aXRoIHNlbWFudGljIHZlcnNpb25pbmdcbiAqIC0gQWNjZXNzIGNvbnRyb2wgdmlhIG9yZ0lkIGFuZCBhY2Nlc3NNb2RpZmllclxuICogLSBGdWxsIGF1ZGl0IHRyYWlsIChjcmVhdGVkL3VwZGF0ZWQgYnkvYXQpXG4gKiAtIEZsZXhpYmxlIG1ldGFkYXRhIHN0b3JhZ2UgdmlhIEpTT05CXG4gKiAtIFN1cHBvcnQgZm9yIGJvdGggU2hlbGxTdGVwIGFuZCBDb2RlQnVpbGRTdGVwIHR5cGVzXG4gKlxuICogQHRhYmxlIHBsdWdpbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbiA9IHBnVGFibGUoJ3BsdWdpbnMnLCB7XG4gIC8vIFByaW1hcnkga2V5XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG5cbiAgLy8gT3JnYW5pemF0aW9uIGFuZCBhY2Nlc3MgY29udHJvbFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KVxuICAgIC5kZWZhdWx0KFNZU1RFTV9PUkdfSUQpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBdWRpdCBmaWVsZHNcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5JylcbiAgICAuZGVmYXVsdChTWVNURU1fT1JHX0lEKVxuICAgIC5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSlcbiAgICAuZGVmYXVsdE5vdygpXG4gICAgLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5JylcbiAgICAuZGVmYXVsdChTWVNURU1fT1JHX0lEKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSlcbiAgICAuZGVmYXVsdE5vdygpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBDb3JlIHBsdWdpbiBpbmZvcm1hdGlvblxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KVxuICAgIC5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJylcbiAgICAuJHR5cGU8c3RyaW5nW10+KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pXG4gICAgLmRlZmF1bHQoJzEuMC4wJylcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFBsdWdpbiBjbGFzc2lmaWNhdGlvblxuICBjYXRlZ29yeTogdmFyY2hhcignY2F0ZWdvcnknLCB7IGxlbmd0aDogNTAgfSlcbiAgICAuZGVmYXVsdCgndW5rbm93bicpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBQbHVnaW4gY29uZmlndXJhdGlvblxuICBtZXRhZGF0YToganNvbmIoJ21ldGFkYXRhJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBwbHVnaW5UeXBlOiB2YXJjaGFyKCdwbHVnaW5fdHlwZScsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC4kdHlwZTxQbHVnaW5UeXBlPigpXG4gICAgLmRlZmF1bHQoJ0NvZGVCdWlsZFN0ZXAnIGFzIFBsdWdpblR5cGUpXG4gICAgLm5vdE51bGwoKSxcbiAgY29tcHV0ZVR5cGU6IHZhcmNoYXIoJ2NvbXB1dGVfdHlwZScsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC4kdHlwZTxDb21wdXRlVHlwZT4oKVxuICAgIC5kZWZhdWx0KCdTTUFMTCcgYXMgQ29tcHV0ZVR5cGUpXG4gICAgLm5vdE51bGwoKSxcbiAgdGltZW91dDogaW50ZWdlcigndGltZW91dCcpLFxuICBmYWlsdXJlQmVoYXZpb3I6IHZhcmNoYXIoJ2ZhaWx1cmVfYmVoYXZpb3InLCB7IGxlbmd0aDogMTAgfSlcbiAgICAuJHR5cGU8J2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZSc+KClcbiAgICAuZGVmYXVsdCgnZmFpbCcpXG4gICAgLm5vdE51bGwoKSxcbiAgc2VjcmV0czoganNvbmIoJ3NlY3JldHMnKVxuICAgIC4kdHlwZTxQbHVnaW5TZWNyZXRbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG4gIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IHZhcmNoYXIoJ3ByaW1hcnlfb3V0cHV0X2RpcmVjdG9yeScsIHsgbGVuZ3RoOiAyOCB9KSxcblxuICAvLyBCdWlsZCBjb25maWd1cmF0aW9uXG4gIGVudjoganNvbmIoJ2VudicpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBidWlsZEFyZ3M6IGpzb25iKCdidWlsZF9hcmdzJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIGluc3RhbGxDb21tYW5kczogdGV4dCgnaW5zdGFsbF9jb21tYW5kcycpXG4gICAgLmFycmF5KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICBjb21tYW5kczogdGV4dCgnY29tbWFuZHMnKVxuICAgIC5hcnJheSgpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEb2NrZXIgY29uZmlndXJhdGlvblxuICBkb2NrZXJmaWxlOiB0ZXh0KCdkb2NrZXJmaWxlJyksXG4gIGJ1aWxkVHlwZTogdmFyY2hhcignYnVpbGRfdHlwZScsIHsgbGVuZ3RoOiAyMCB9KVxuICAgIC5kZWZhdWx0KCdidWlsZF9pbWFnZScpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBY2Nlc3MgYW5kIHZpc2liaWxpdHlcbiAgYWNjZXNzTW9kaWZpZXI6IHZhcmNoYXIoJ2FjY2Vzc19tb2RpZmllcicsIHsgbGVuZ3RoOiAxMCB9KVxuICAgIC4kdHlwZTxBY2Nlc3NNb2RpZmllcj4oKVxuICAgIC5kZWZhdWx0KCdwcml2YXRlJyBhcyBBY2Nlc3NNb2RpZmllcilcbiAgICAubm90TnVsbCgpLFxuICBpc0RlZmF1bHQ6IGJvb2xlYW4oJ2lzX2RlZmF1bHQnKVxuICAgIC5kZWZhdWx0KGZhbHNlKVxuICAgIC5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKVxuICAgIC5kZWZhdWx0KHRydWUpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEZWxldGlvbiB0cmFja2luZyAoc29mdCBkZWxldGUpXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBJbmRleGVzIGZvciBjb21tb24gcXVlcmllc1xuICBuYW1lSWR4OiBpbmRleCgncGx1Z2luX25hbWVfaWR4Jykub24odGFibGUubmFtZSksXG4gIG9yZ0lkSWR4OiBpbmRleCgncGx1Z2luX29yZ19pZF9pZHgnKS5vbih0YWJsZS5vcmdJZCksXG4gIHZlcnNpb25JZHg6IGluZGV4KCdwbHVnaW5fdmVyc2lvbl9pZHgnKS5vbih0YWJsZS52ZXJzaW9uKSxcbiAgYWN0aXZlSWR4OiBpbmRleCgncGx1Z2luX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5pc0FjdGl2ZSksXG4gIGNyZWF0ZWRBdElkeDogaW5kZXgoJ3BsdWdpbl9jcmVhdGVkX2F0X2lkeCcpLm9uKHRhYmxlLmNyZWF0ZWRBdCksXG4gIHVwZGF0ZWRBdElkeDogaW5kZXgoJ3BsdWdpbl91cGRhdGVkX2F0X2lkeCcpLm9uKHRhYmxlLnVwZGF0ZWRBdCksXG5cbiAgLy8gQ2F0ZWdvcnkgaW5kZXggZm9yIGZpbHRlcmluZ1xuICBjYXRlZ29yeUlkeDogaW5kZXgoJ3BsdWdpbl9jYXRlZ29yeV9pZHgnKS5vbih0YWJsZS5jYXRlZ29yeSksXG5cbiAgLy8gQ29tcG9zaXRlIGluZGV4IGZvciBjb21tb24gYWNjZXNzIHBhdHRlcm4gKG9yZ0lkICsgaXNBY3RpdmUpXG4gIG9yZ0FjdGl2ZUlkeDogaW5kZXgoJ3BsdWdpbl9vcmdfYWN0aXZlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5pc0FjdGl2ZSksXG5cbiAgLy8gQ29tcG9zaXRlIGluZGV4IGZvciBmaWx0ZXJlZCBxdWVyaWVzIChvcmdJZCArIGFjY2Vzc01vZGlmaWVyICsgaXNBY3RpdmUpXG4gIG9yZ0FjY2Vzc0FjdGl2ZUlkeDogaW5kZXgoJ3BsdWdpbl9vcmdfYWNjZXNzX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuYWNjZXNzTW9kaWZpZXIsIHRhYmxlLmlzQWN0aXZlKSxcblxuICAvLyBQYXJ0aWFsIGluZGV4IGZvciBhY3RpdmUtb25seSBxdWVyaWVzIChzbWFsbGVyLCBmYXN0ZXIgdGhhbiBmdWxsIGluZGV4KVxuICBhY3RpdmVPbmx5T3JnSWR4OiBpbmRleCgncGx1Z2luX2FjdGl2ZV9vbmx5X29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KS53aGVyZShzcWxgaXNfYWN0aXZlID0gdHJ1ZWApLFxuXG4gIC8vIFVuaXF1ZSBjb25zdHJhaW50IG9uIG5hbWUgKyB2ZXJzaW9uICsgb3JnSWRcbiAgbmFtZVZlcnNpb25PcmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fbmFtZV92ZXJzaW9uX29yZ191bmlxdWUnKVxuICAgIC5vbih0YWJsZS5uYW1lLCB0YWJsZS52ZXJzaW9uLCB0YWJsZS5vcmdJZCksXG5cbiAgLy8gQ2hlY2sgY29uc3RyYWludHNcbiAgdmVyc2lvbkNoZWNrOiBjaGVjayggJ3BsdWdpbl92ZXJzaW9uX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS52ZXJzaW9ufSB+ICdeWzAtOV0rXFwuWzAtOV0rXFwuWzAtOV0rKC1bYS16QS1aMC05Li1dKyk/KFxcK1thLXpBLVowLTkuLV0rKT8kJ2AsXG4gICksXG59KSk7XG5cbi8qKlxuICogVHlwZVNjcmlwdCB0eXBlcyByZXByZXNlbnRpbmcgZGF0YWJhc2Ugcm93c1xuICovXG5leHBvcnQgdHlwZSBQbHVnaW4gPSB0eXBlb2YgcGx1Z2luLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkluc2VydCA9IHR5cGVvZiBwbHVnaW4uJGluZmVySW5zZXJ0O1xuXG4vKipcbiAqIEhlbHBlciB0eXBlcyBmb3Igd29ya2luZyB3aXRoIHBhcnRpYWwgdXBkYXRlc1xuICovXG5leHBvcnQgdHlwZSBQbHVnaW5VcGRhdGUgPSBQYXJ0aWFsPE9taXQ8UGx1Z2luSW5zZXJ0LCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAnY3JlYXRlZEJ5Jz4+O1xuIl19
@@ -39,8 +39,11 @@ import { sql } from 'drizzle-orm';
39
39
  import { db } from './postgres-connection.js';
40
40
  const logger = createLogger('tenant-context');
41
41
  function getContextMode() {
42
- const raw = (process.env.RLS_CONTEXT_MODE || 'warn').toLowerCase();
43
- return raw === 'silent' || raw === 'strict' ? raw : 'warn';
42
+ const raw = process.env.RLS_CONTEXT_MODE?.toLowerCase();
43
+ if (raw === 'silent' || raw === 'warn' || raw === 'strict')
44
+ return raw;
45
+ // No explicit override: fail-fast in production, warn everywhere else.
46
+ return process.env.NODE_ENV === 'production' ? 'strict' : 'warn';
44
47
  }
45
48
  /**
46
49
  * Per-request tenant context. Populated by Express middleware once the JWT
@@ -133,4 +136,4 @@ export async function withTenantTx(fn) {
133
136
  return fn(tx);
134
137
  });
135
138
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS90ZW5hbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBYTlDLFNBQVMsY0FBYztJQUNyQixNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkUsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzdELENBQUM7QUFlRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksaUJBQWlCLEVBQWlCLENBQUM7QUFFcEU7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUksR0FBa0IsRUFBRSxFQUFXO0lBQ3JFLE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVEOzBFQUMwRTtBQUMxRSxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU8sYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsNEVBQTRFO2NBQzFFLHdFQUF3RSxDQUMzRSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUNoQyxFQUEyRTtJQUUzRSxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFckMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1Qsc0VBQXNFO1FBQ3RFLHNFQUFzRTtRQUN0RSx1RUFBdUU7UUFDdkUsc0VBQXNFO1FBQ3RFLG1FQUFtRTtRQUNuRSw2QkFBNkI7UUFDN0IsTUFBTSxJQUFJLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FDYix1RUFBdUU7a0JBQ3JFLHdFQUF3RTtrQkFDeEUsK0NBQStDLENBQ2xELENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDcEIsc0VBQXNFO1lBQ3RFLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0VBQW9FLEVBQUU7Z0JBQ2hGLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEtBQUs7YUFDakQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUMvQixNQUFNLFlBQVksR0FBRyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUUxRCxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ2pDLHlFQUF5RTtRQUN6RSwyRUFBMkU7UUFDM0UseURBQXlEO1FBQ3pELE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUEsbUNBQW1DLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDdkUsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQSx3Q0FBd0MsWUFBWSxTQUFTLENBQUMsQ0FBQztRQUNuRixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUZW5hbnQtY29udGV4dCBwbHVtYmluZyBmb3IgUG9zdGdyZXMgcm93LWxldmVsIHNlY3VyaXR5LlxuICpcbiAqIEJhY2tncm91bmQ6IHBvc3RncmVzLWluaXQuc3FsIGluc3RhbGxzIFJMUyBwb2xpY2llcyBvbiBldmVyeSB1c2VyLWRhdGFcbiAqIHRhYmxlIHRoYXQgY29uc3VsdCB0d28gc2Vzc2lvbiBHVUNzIOKAlCBgYXBwLm9yZ19pZGAgYW5kIGBhcHAuaXNfc3lzYWRtaW5gLlxuICogVG9kYXkgdGhlIHRhYmxlcyBhcmUgaW4gb3duZXItYnlwYXNzIG1vZGUgKHRoZSBjb25uZWN0aW9uIHVzZXIgb3ducyB0aGVtLFxuICogUG9zdGdyZXMgbGV0cyBvd25lcnMgc2tpcCBSTFMpLCBzbyB0aGUgcG9saWNpZXMgZG9uJ3QgYWN0dWFsbHkgZW5mb3JjZS5cbiAqIE9uY2Ugd2UgZmxpcCBhIHRhYmxlIHRvIGBGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFlgLCBldmVyeSBxdWVyeSBhZ2FpbnN0XG4gKiBpdCBtdXN0IHJ1biBpbnNpZGUgYSB0cmFuc2FjdGlvbiB0aGF0IGhhcyBTRVQgTE9DQUwnZCBib3RoIEdVQ3Mg4oCUIG9yIGl0XG4gKiByZXR1cm5zIHplcm8gcm93cyBmb3Igbm9uLXN5c2FkbWlucyAoYW5kIG1heSBmYWlsIHRvIHdyaXRlIGZvciBhbnkgY2FsbGVyKS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyB0aGUgc2VhbS5cbiAqXG4gKiAgIDEuIGB0ZW5hbnRDb250ZXh0YCAoQXN5bmNMb2NhbFN0b3JhZ2UpIGNhcnJpZXMgYHtvcmdJZCwgaXNTdXBlckFkbWlufWBcbiAqICAgICAgZG93biB0aGUgY2FsbCBjaGFpbiB3aXRob3V0IHByb3AtZHJpbGxpbmcuIFNldCBvbmNlIGF0IHRoZSByZXF1ZXN0XG4gKiAgICAgIGJvdW5kYXJ5OyByZWFkYWJsZSBmcm9tIGFueXdoZXJlLlxuICpcbiAqICAgMi4gYHdpdGhUZW5hbnRUeChmbilgIG9wZW5zIGEgdHJhbnNhY3Rpb24sIFNFVCBMT0NBTCdzIGJvdGggR1VDcyBmcm9tXG4gKiAgICAgIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LCB0aGVuIGludm9rZXMgYGZuKHR4KWAuIFNlcnZpY2VzIG1pZ3JhdGUgb25lXG4gKiAgICAgIGF0IGEgdGltZSBieSB3cmFwcGluZyB0aGVpciBleGlzdGluZyBkcml6emxlIGNhbGxzIGluIHRoaXMgaGVscGVyIOKAlFxuICogICAgICBgZGIuc2VsZWN0KCkuZnJvbSguLi4pYCBiZWNvbWVzIGB3aXRoVGVuYW50VHgodHggPT4gdHguc2VsZWN0KCkuZnJvbSguLi4pKWAuXG4gKlxuICogICAzLiBgcnVuV2l0aFRlbmFudENvbnRleHQoY3R4LCBmbilgIGlzIHRoZSBFeHByZXNzLW1pZGRsZXdhcmUtc2lkZVxuICogICAgICBib29rZW5kIHRoYXQgZXN0YWJsaXNoZXMgdGhlIEFzeW5jTG9jYWxTdG9yYWdlIHNjb3BlIGZvciB0aGUgcmVxdWVzdC5cbiAqXG4gKiBNaWdyYXRpb24gb3JkZXIgKHNlZSBkb2NzL3BsYW5zL2YtMS0wLXJscy1lbmZvcmNlbWVudC5tZCk6XG4gKiAgIC0gRmlyc3QgYWRvcHRlcnM6IG5ld2x5LXdyaXR0ZW4gc2VydmljZXMgKGRhc2hib2FyZCwgYWxlcnQtZGVzdGluYXRpb24pXG4gKiAgICAgd2hlcmUgdGhlIGNoYW5nZSBpcyBtZWNoYW5pY2FsLlxuICogICAtIFRoZW4gaGlnaC13cml0ZSBzZXJ2aWNlcyAocGx1Z2luLCBwaXBlbGluZSkuIFNvYWsgZWFjaCBvbmUgYmVmb3JlXG4gKiAgICAgZmxpcHBpbmcgdGhlIHVuZGVybHlpbmcgdGFibGUgdG8gRk9SQ0UuXG4gKiAgIC0gYWRtaW5fYXVkaXRfbG9nIHVzZXMgYSBzeXNhZG1pbi1vbmx5IHBvbGljeSDigJQgc3lzYWRtaW4gcGF0aHMgbXVzdFxuICogICAgIGFsc28gc2V0IGBhcHAuaXNfc3lzYWRtaW4gPSAndHJ1ZSdgIG9yIHRoZXknbGwgbG9zZSBhY2Nlc3MgdG8gaXQuXG4gKi9cblxuaW1wb3J0IHsgQXN5bmNMb2NhbFN0b3JhZ2UgfSBmcm9tICdub2RlOmFzeW5jX2hvb2tzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7IGRiIH0gZnJvbSAnLi9wb3N0Z3Jlcy1jb25uZWN0aW9uLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCd0ZW5hbnQtY29udGV4dCcpO1xuXG4vKipcbiAqIEJlaGF2aW9yIHdoZW4gYHdpdGhUZW5hbnRUeGAgaXMgaW52b2tlZCBvdXRzaWRlIGFueSBgcnVuV2l0aFRlbmFudENvbnRleHRgXG4gKiBzY29wZS4gRGVmYXVsdHMgdG8gJ3dhcm4nIHNvIGV4aXN0aW5nIGNvZGUgcGF0aHMgdGhhdCBoYXZlbid0IGJlZW4gYXVkaXRlZFxuICoga2VlcCB3b3JraW5nIGJ1dCBzdXJmYWNlIGluIGxvZ3MuIFNldCBSTFNfQ09OVEVYVF9NT0RFPXN0cmljdCB0byBmbGlwXG4gKiBwcm9kdWN0aW9uIGludG8gZmFpbC1mYXN0IOKAlCByZWNvbW1lbmRlZCBvbmNlIHRoZSBjb2RlYmFzZSBpcyBmdWxseSBhdWRpdGVkLlxuICpcbiAqICdzaWxlbnQnIGlzIGtlcHQgZm9yIHRlc3RzIGFuZCBzY3JpcHRzIHRoYXQgaW50ZW50aW9uYWxseSBlbnRlciB0aGUgREJcbiAqIHdpdGhvdXQgY29udGV4dCAoZS5nLiBpbnRlZ3JhdGlvbiB0ZXN0IHNldHVwIHRoYXQgcnVucyBhcyB0aGUgY29ubmVjdGlvblxuICogb3duZXIgYmVmb3JlIGFueSB0ZW5hbnQgaXMgcHJvdmlzaW9uZWQpLlxuICovXG50eXBlIENvbnRleHRNb2RlID0gJ3NpbGVudCcgfCAnd2FybicgfCAnc3RyaWN0JztcbmZ1bmN0aW9uIGdldENvbnRleHRNb2RlKCk6IENvbnRleHRNb2RlIHtcbiAgY29uc3QgcmF3ID0gKHByb2Nlc3MuZW52LlJMU19DT05URVhUX01PREUgfHwgJ3dhcm4nKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gcmF3ID09PSAnc2lsZW50JyB8fCByYXcgPT09ICdzdHJpY3QnID8gcmF3IDogJ3dhcm4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbmFudENvbnRleHQge1xuICAvKiogQ2FsbGVyJ3Mgb3JnLiBVbmRlZmluZWQgZm9yIHVuLWF1dGhlbnRpY2F0ZWQgLyBzeXN0ZW0gam9icy4gKi9cbiAgb3JnSWQ/OiBzdHJpbmc7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIGNhbGxlciBpcyBhIHN5c2FkbWluIChzeXN0ZW0tb3JnIGFkbWluKS4gQnlwYXNzZXMgUkxTXG4gICAqICBwb2xpY2llcyB2aWEgdGhlIHN5c2FkbWluLWJ5cGFzcyBicmFuY2ggaW4gYGN1cnJlbnRfaXNfc3lzYWRtaW4oKWAuICovXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgLyoqIE9yZyDihpIgdGVhbSBoaWVyYXJjaHk6IHRoZSBjYWxsZXIncyBhY3RpdmUtb3JnIHBhcmVudCAocHJlc2VudCBvbmx5IHdoZW4gdGhlXG4gICAqICBhY3RpdmUgb3JnIGlzIGEgdGVhbSkuIE5vdCB1c2VkIGZvciBSTFM7IGNhcnJpZWQgc28gZG93bnN0cmVhbSBzaWRlLWVmZmVjdHNcbiAgICogIChlLmcuIGVudGl0eS1ldmVudCBjb21wbGlhbmNlIGV2YWwpIGNhbiBob25vciBwYXJlbnQgYHByb3BhZ2F0ZVRvQ2hpbGRyZW5gXG4gICAqICBydWxlcyB3aXRob3V0IGEgcmVxdWVzdCBpbiBzY29wZS4gKi9cbiAgcGFyZW50T3JnSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGVyLXJlcXVlc3QgdGVuYW50IGNvbnRleHQuIFBvcHVsYXRlZCBieSBFeHByZXNzIG1pZGRsZXdhcmUgb25jZSB0aGUgSldUXG4gKiBpcyB2YWxpZGF0ZWQ7IGNvbnN1bWVkIGJ5IGB3aXRoVGVuYW50VHhgIGFuZCBhbnkgaGVscGVyIHRoYXQgbmVlZHMgdG9cbiAqIGtub3cgXCJ3aG8gaXMgdGhlIGNhbGxlclwiIHdpdGhvdXQgcmUtZGVyaXZpbmcgZnJvbSB0aGUgcmVxdWVzdCBvYmplY3QuXG4gKi9cbmV4cG9ydCBjb25zdCB0ZW5hbnRDb250ZXh0ID0gbmV3IEFzeW5jTG9jYWxTdG9yYWdlPFRlbmFudENvbnRleHQ+KCk7XG5cbi8qKlxuICogUnVuIGBmbmAgaW5zaWRlIHRoZSBnaXZlbiB0ZW5hbnQgc2NvcGUuIFRoZSBBc3luY0xvY2FsU3RvcmFnZSBzY29wZVxuICogc3Vydml2ZXMgYWNyb3NzIGFzeW5jIGJvdW5kYXJpZXMgKFByb21pc2VzLCBzZXRUaW1lb3V0LCBldGMuKSwgc28gYW55XG4gKiBgd2l0aFRlbmFudFR4YCBjYWxsIGluc2lkZSBgZm5gIOKAlCBkaXJlY3RseSBvciB0aHJvdWdoIGFueSBkZXB0aCBvZlxuICogYXN5bmMgaGVscGVycyDigJQgcGlja3MgdXAgYGN0eGAuXG4gKlxuICogV3JhcCBgbmV4dCgpYCBmcm9tIGFuIEV4cHJlc3MgbWlkZGxld2FyZSB0byBlc3RhYmxpc2ggcGVyLXJlcXVlc3Qgc2NvcGU6XG4gKlxuICogICAgIGFwcC51c2UoKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gKiAgICAgICBydW5XaXRoVGVuYW50Q29udGV4dCh7IG9yZ0lkLCBpc1N1cGVyQWRtaW4gfSwgKCkgPT4gbmV4dCgpKTtcbiAqICAgICB9KTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bldpdGhUZW5hbnRDb250ZXh0PFQ+KGN0eDogVGVuYW50Q29udGV4dCwgZm46ICgpID0+IFQpOiBUIHtcbiAgcmV0dXJuIHRlbmFudENvbnRleHQucnVuKGN0eCwgZm4pO1xufVxuXG4vKiogUmVhZCB0aGUgY3VycmVudCB0ZW5hbnQgY29udGV4dC4gUmV0dXJucyB1bmRlZmluZWQgb3V0c2lkZSBhblxuICogIGBydW5XaXRoVGVuYW50Q29udGV4dGAgc2NvcGUgKGUuZy4gYmFja2dyb3VuZCB3b3JrZXJzLCBtaWdyYXRpb25zKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW5hbnRDb250ZXh0KCk6IFRlbmFudENvbnRleHQgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdGVuYW50Q29udGV4dC5nZXRTdG9yZSgpO1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSBjdXJyZW50IGNvZGUgaXMgcnVubmluZyBpbnNpZGUgYSB0ZW5hbnQgc2NvcGUuIENhbGxlcnNcbiAqIHRoYXQgbGVnaXRpbWF0ZWx5IG5lZWQgdG8gcmVmdXNlIHRvIG9wZXJhdGUgd2l0aG91dCBvbmUgKGUuZy4gaGFuZGxlcnNcbiAqIHRoYXQgdG91Y2ggRk9SQ0UnZCBSTFMgdGFibGVzKSBjYW4gdXNlIHRoaXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZVxuICogZG93bnN0cmVhbSBcInBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3IgdG8gc3VyZmFjZSB0aGUgYnVnLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVRlbmFudENvbnRleHQoKTogVGVuYW50Q29udGV4dCB7XG4gIGNvbnN0IGN0eCA9IHRlbmFudENvbnRleHQuZ2V0U3RvcmUoKTtcbiAgaWYgKCFjdHgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAncmVxdWlyZVRlbmFudENvbnRleHQ6IG5vIHRlbmFudCBzY29wZSBhY3RpdmUuIFdyYXAgeW91ciBoYW5kbGVyL3dvcmtlciBpbiAnXG4gICAgICArICdydW5XaXRoVGVuYW50Q29udGV4dCh7IG9yZ0lkLCBpc1N1cGVyQWRtaW4gfSwgLi4uKSBiZWZvcmUgYW55IERCIGNhbGwuJyxcbiAgICApO1xuICB9XG4gIHJldHVybiBjdHg7XG59XG5cbi8qKlxuICogT3BlbiBhIHRyYW5zYWN0aW9uIHdpdGggUkxTIEdVQ3MgU0VUIExPQ0FMIGZyb20gdGhlIGN1cnJlbnRcbiAqIEFzeW5jTG9jYWxTdG9yYWdlIHRlbmFudCBjb250ZXh0LCB0aGVuIGludm9rZSBgZm4odHgpYC5cbiAqXG4gKiAtIFdoZW4gY2FsbGVkIG91dHNpZGUgYSB0ZW5hbnQgc2NvcGUgKGUuZy4gZnJvbSBhIGJhY2tncm91bmQgam9iIHRoYXRcbiAqICAgZG9lc24ndCBoYXZlIGEgY2FsbGVyIGlkZW50aXR5KSwgdGhlIHRyYW5zYWN0aW9uIGlzIG9wZW5lZCB3aXRoIGJvdGhcbiAqICAgR1VDcyBjbGVhcmVkIOKAlCBSTFMgcG9saWNpZXMgd2lsbCByZXR1cm4gemVybyByb3dzIG9uIEZPUkNFJ2QgdGFibGVzLlxuICogICBDYWxsZXJzIHRoYXQgbmVlZCBhIHN5c2FkbWluLWVxdWl2YWxlbnQgc2NvcGUgc2hvdWxkIHdyYXAgdGhlbXNlbHZlcyBpblxuICogICBgcnVuV2l0aFRlbmFudENvbnRleHQoeyBpc1N1cGVyQWRtaW46IHRydWUgfSwg4oCmKWAgZXhwbGljaXRseS5cbiAqXG4gKiAtIFVzZXMgYHNldF9jb25maWcoa2V5LCB2YWx1ZSwgdHJ1ZSlgICh0aGUgYm9vbGVhbiA9IGBpc19sb2NhbGAsIGkuZS5cbiAqICAgdHJhbnNhY3Rpb24tc2NvcGVkKS4gRXF1aXZhbGVudCB0byBgU0VUIExPQ0FMYCBidXQgdGFrZXMgdGhlIHZhbHVlIGFzXG4gKiAgIGEgcGFyYW1ldGVyLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQg4oCUIERyaXp6bGUncyBgc3FsYCB0ZW1wbGF0ZSBiaW5kcyB0aGVcbiAqICAgdmFsdWUgc2FmZWx5IHNvIGFuIGF0dGFja2VyLWNvbnRyb2xsZWQgYG9yZ0lkYCBjYW4ndCBlc2NhcGUgdGhlIHF1b3RpbmcuXG4gKlxuICogLSBSZXR1cm5zIHdoYXRldmVyIGBmbmAgcmV0dXJuczsgdGhyb3dzIHdoYXRldmVyIGBmbmAgdGhyb3dzIChEcml6emxlXG4gKiAgIGhhbmRsZXMgdGhlIENPTU1JVC9ST0xMQkFDSyBmb3IgdXMpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFRlbmFudFR4PFQ+KFxuICBmbjogKHR4OiBQYXJhbWV0ZXJzPFBhcmFtZXRlcnM8dHlwZW9mIGRiLnRyYW5zYWN0aW9uPlswXT5bMF0pID0+IFByb21pc2U8VD4sXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgY3R4ID0gdGVuYW50Q29udGV4dC5nZXRTdG9yZSgpO1xuXG4gIGlmICghY3R4KSB7XG4gICAgLy8gU3VyZmFjZSB0aGUgYnVnIGluc3RlYWQgb2Ygc2lsZW50bHkgU0VUJ2luZyBlbXB0eSBHVUNzLiBUaGUgZGVmYXVsdFxuICAgIC8vIG1vZGUgKCd3YXJuJykgbG9ncyBhbiBhY3Rpb25hYmxlIHRyYWNlIHNvIHRoZSBiYWQgY2FsbCBzaXRlIGlzIGVhc3lcbiAgICAvLyB0byBmaW5kOyBwcm9kdWN0aW9uIGRlcGxveW1lbnRzIHRoYXQgaGF2ZSBmaW5pc2hlZCB0aGUgYXVkaXQgY2FuIHNldFxuICAgIC8vIFJMU19DT05URVhUX01PREU9c3RyaWN0IHRvIGZhaWwtZmFzdCBhdCB0aGUgY2FsbCBzaXRlIChiZXR0ZXIgc3RhY2tcbiAgICAvLyB0cmFjZSB0aGFuIHRoZSBQb3N0Z3JlcyBcInBlcm1pc3Npb24gZGVuaWVkXCIgdGhhdCB3b3VsZCBvdGhlcndpc2VcbiAgICAvLyBzdXJmYWNlIGZyb20gRk9SQ0UnZCBSTFMpLlxuICAgIGNvbnN0IG1vZGUgPSBnZXRDb250ZXh0TW9kZSgpO1xuICAgIGlmIChtb2RlID09PSAnc3RyaWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnd2l0aFRlbmFudFR4IGNhbGxlZCBvdXRzaWRlIGEgdGVuYW50IHNjb3BlLiBXcmFwIHlvdXIgaGFuZGxlci93b3JrZXIgJ1xuICAgICAgICArICdpbiBydW5XaXRoVGVuYW50Q29udGV4dCh7IG9yZ0lkLCBpc1N1cGVyQWRtaW4gfSwgLi4uKSBiZWZvcmUgaW52b2tpbmcgJ1xuICAgICAgICArICdhbnkgc2VydmljZSB0aGF0IHRvdWNoZXMgUkxTLWVuZm9yY2VkIHRhYmxlcy4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG1vZGUgPT09ICd3YXJuJykge1xuICAgICAgLy8gSW5jbHVkZSBhIHN5bnRoZXRpYyBzdGFjayBzbyB0aGUgb2ZmZW5kaW5nIGNhbGwgc2l0ZSBpcyBpbiB0aGUgbG9nLlxuICAgICAgbG9nZ2VyLndhcm4oJ3dpdGhUZW5hbnRUeCBjYWxsZWQgb3V0c2lkZSBhIHRlbmFudCBzY29wZTsgUkxTIEdVQ3Mgd2lsbCBiZSBlbXB0eScsIHtcbiAgICAgICAgc3RhY2s6IG5ldyBFcnJvcigndGVuYW50LWNvbnRleHQgbWlzc2luZycpLnN0YWNrLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JnSWQgPSBjdHg/Lm9yZ0lkID8/ICcnO1xuICBjb25zdCBpc1N1cGVyQWRtaW4gPSBjdHg/LmlzU3VwZXJBZG1pbiA/ICd0cnVlJyA6ICdmYWxzZSc7XG5cbiAgcmV0dXJuIGRiLnRyYW5zYWN0aW9uKGFzeW5jICh0eCkgPT4ge1xuICAgIC8vIFNFVCBMT0NBTCB2aWEgc2V0X2NvbmZpZygpIHNvIHRoZSB2YWx1ZXMgYXJlIHRyYW5zYWN0aW9uLXNjb3BlZCAoYXV0by1cbiAgICAvLyByZWxlYXNlZCBvbiBDT01NSVQvUk9MTEJBQ0spLiBUaGUgZHJpdmVyIGJpbmRzIHRoZSB2YWx1ZXMgYXMgcGFyYW1ldGVycyxcbiAgICAvLyBzbyBhIGhvc3RpbGUgb3JnX2lkIGNhbid0IGJyZWFrIG91dCBvZiB0aGUgR1VDIHN5bnRheC5cbiAgICBhd2FpdCB0eC5leGVjdXRlKHNxbGBTRUxFQ1Qgc2V0X2NvbmZpZygnYXBwLm9yZ19pZCcsICR7b3JnSWR9LCB0cnVlKWApO1xuICAgIGF3YWl0IHR4LmV4ZWN1dGUoc3FsYFNFTEVDVCBzZXRfY29uZmlnKCdhcHAuaXNfc3lzYWRtaW4nLCAke2lzU3VwZXJBZG1pbn0sIHRydWUpYCk7XG4gICAgcmV0dXJuIGZuKHR4KTtcbiAgfSk7XG59XG4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS90ZW5hbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBZTlDLFNBQVMsY0FBYztJQUNyQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3hELElBQUksR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDdkUsdUVBQXVFO0lBQ3ZFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNuRSxDQUFDO0FBZUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGlCQUFpQixFQUFpQixDQUFDO0FBRXBFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFJLEdBQWtCLEVBQUUsRUFBVztJQUNyRSxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRDswRUFDMEU7QUFDMUUsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNsQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxNQUFNLElBQUksS0FBSyxDQUNiLDRFQUE0RTtjQUMxRSx3RUFBd0UsQ0FDM0UsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDaEMsRUFBMkU7SUFFM0UsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRXJDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxtRUFBbUU7UUFDbkUsNkJBQTZCO1FBQzdCLE1BQU0sSUFBSSxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUVBQXVFO2tCQUNyRSx3RUFBd0U7a0JBQ3hFLCtDQUErQyxDQUNsRCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLHNFQUFzRTtZQUN0RSxNQUFNLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxFQUFFO2dCQUNoRixLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxLQUFLO2FBQ2pELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDL0IsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFFMUQsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUNqQyx5RUFBeUU7UUFDekUsMkVBQTJFO1FBQzNFLHlEQUF5RDtRQUN6RCxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBLG1DQUFtQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUEsd0NBQXdDLFlBQVksU0FBUyxDQUFDLENBQUM7UUFDbkYsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGVuYW50LWNvbnRleHQgcGx1bWJpbmcgZm9yIFBvc3RncmVzIHJvdy1sZXZlbCBzZWN1cml0eS5cbiAqXG4gKiBCYWNrZ3JvdW5kOiBwb3N0Z3Jlcy1pbml0LnNxbCBpbnN0YWxscyBSTFMgcG9saWNpZXMgb24gZXZlcnkgdXNlci1kYXRhXG4gKiB0YWJsZSB0aGF0IGNvbnN1bHQgdHdvIHNlc3Npb24gR1VDcyDigJQgYGFwcC5vcmdfaWRgIGFuZCBgYXBwLmlzX3N5c2FkbWluYC5cbiAqIFRvZGF5IHRoZSB0YWJsZXMgYXJlIGluIG93bmVyLWJ5cGFzcyBtb2RlICh0aGUgY29ubmVjdGlvbiB1c2VyIG93bnMgdGhlbSxcbiAqIFBvc3RncmVzIGxldHMgb3duZXJzIHNraXAgUkxTKSwgc28gdGhlIHBvbGljaWVzIGRvbid0IGFjdHVhbGx5IGVuZm9yY2UuXG4gKiBPbmNlIHdlIGZsaXAgYSB0YWJsZSB0byBgRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZYCwgZXZlcnkgcXVlcnkgYWdhaW5zdFxuICogaXQgbXVzdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24gdGhhdCBoYXMgU0VUIExPQ0FMJ2QgYm90aCBHVUNzIOKAlCBvciBpdFxuICogcmV0dXJucyB6ZXJvIHJvd3MgZm9yIG5vbi1zeXNhZG1pbnMgKGFuZCBtYXkgZmFpbCB0byB3cml0ZSBmb3IgYW55IGNhbGxlcikuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgdGhlIHNlYW0uXG4gKlxuICogICAxLiBgdGVuYW50Q29udGV4dGAgKEFzeW5jTG9jYWxTdG9yYWdlKSBjYXJyaWVzIGB7b3JnSWQsIGlzU3VwZXJBZG1pbn1gXG4gKiAgICAgIGRvd24gdGhlIGNhbGwgY2hhaW4gd2l0aG91dCBwcm9wLWRyaWxsaW5nLiBTZXQgb25jZSBhdCB0aGUgcmVxdWVzdFxuICogICAgICBib3VuZGFyeTsgcmVhZGFibGUgZnJvbSBhbnl3aGVyZS5cbiAqXG4gKiAgIDIuIGB3aXRoVGVuYW50VHgoZm4pYCBvcGVucyBhIHRyYW5zYWN0aW9uLCBTRVQgTE9DQUwncyBib3RoIEdVQ3MgZnJvbVxuICogICAgICB0aGUgc3Vycm91bmRpbmcgY29udGV4dCwgdGhlbiBpbnZva2VzIGBmbih0eClgLiBTZXJ2aWNlcyBtaWdyYXRlIG9uZVxuICogICAgICBhdCBhIHRpbWUgYnkgd3JhcHBpbmcgdGhlaXIgZXhpc3RpbmcgZHJpenpsZSBjYWxscyBpbiB0aGlzIGhlbHBlciDigJRcbiAqICAgICAgYGRiLnNlbGVjdCgpLmZyb20oLi4uKWAgYmVjb21lcyBgd2l0aFRlbmFudFR4KHR4ID0+IHR4LnNlbGVjdCgpLmZyb20oLi4uKSlgLlxuICpcbiAqICAgMy4gYHJ1bldpdGhUZW5hbnRDb250ZXh0KGN0eCwgZm4pYCBpcyB0aGUgRXhwcmVzcy1taWRkbGV3YXJlLXNpZGVcbiAqICAgICAgYm9va2VuZCB0aGF0IGVzdGFibGlzaGVzIHRoZSBBc3luY0xvY2FsU3RvcmFnZSBzY29wZSBmb3IgdGhlIHJlcXVlc3QuXG4gKlxuICogTWlncmF0aW9uIG9yZGVyIChzZWUgZG9jcy9wbGFucy9mLTEtMC1ybHMtZW5mb3JjZW1lbnQubWQpOlxuICogICAtIEZpcnN0IGFkb3B0ZXJzOiBuZXdseS13cml0dGVuIHNlcnZpY2VzIChkYXNoYm9hcmQsIGFsZXJ0LWRlc3RpbmF0aW9uKVxuICogICAgIHdoZXJlIHRoZSBjaGFuZ2UgaXMgbWVjaGFuaWNhbC5cbiAqICAgLSBUaGVuIGhpZ2gtd3JpdGUgc2VydmljZXMgKHBsdWdpbiwgcGlwZWxpbmUpLiBTb2FrIGVhY2ggb25lIGJlZm9yZVxuICogICAgIGZsaXBwaW5nIHRoZSB1bmRlcmx5aW5nIHRhYmxlIHRvIEZPUkNFLlxuICogICAtIGFkbWluX2F1ZGl0X2xvZyB1c2VzIGEgc3lzYWRtaW4tb25seSBwb2xpY3kg4oCUIHN5c2FkbWluIHBhdGhzIG11c3RcbiAqICAgICBhbHNvIHNldCBgYXBwLmlzX3N5c2FkbWluID0gJ3RydWUnYCBvciB0aGV5J2xsIGxvc2UgYWNjZXNzIHRvIGl0LlxuICovXG5cbmltcG9ydCB7IEFzeW5jTG9jYWxTdG9yYWdlIH0gZnJvbSAnbm9kZTphc3luY19ob29rcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQgeyBkYiB9IGZyb20gJy4vcG9zdGdyZXMtY29ubmVjdGlvbi5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcigndGVuYW50LWNvbnRleHQnKTtcblxuLyoqXG4gKiBCZWhhdmlvciB3aGVuIGB3aXRoVGVuYW50VHhgIGlzIGludm9rZWQgb3V0c2lkZSBhbnkgYHJ1bldpdGhUZW5hbnRDb250ZXh0YFxuICogc2NvcGUuIFRoZSBlZmZlY3RpdmUgZGVmYXVsdCBpcyBmYWlsLWZhc3QgKCdzdHJpY3QnKSBpbiBwcm9kdWN0aW9uIHNvIGFcbiAqIG1pc3NpbmcgdGVuYW50IHNjb3BlIHN1cmZhY2VzIGF0IHRoZSBiYWQgY2FsbCBzaXRlIGluc3RlYWQgb2Ygc2lsZW50bHlcbiAqIHJ1bm5pbmcgd2l0aCBlbXB0eSBSTFMgR1VDczsgb3V0c2lkZSBwcm9kdWN0aW9uIGl0IGRlZmF1bHRzIHRvICd3YXJuJyBzb1xuICogdW4tYXVkaXRlZCBkZXYvdGVzdCBwYXRocyBrZWVwIHdvcmtpbmcgYnV0IGxvZyBhbiBhY3Rpb25hYmxlIHRyYWNlLiBBblxuICogZXhwbGljaXQgUkxTX0NPTlRFWFRfTU9ERSBlbnYgb3ZlcnJpZGUgYWx3YXlzIHdpbnMuXG4gKlxuICogJ3NpbGVudCcgaXMga2VwdCBmb3IgdGVzdHMgYW5kIHNjcmlwdHMgdGhhdCBpbnRlbnRpb25hbGx5IGVudGVyIHRoZSBEQlxuICogd2l0aG91dCBjb250ZXh0IChlLmcuIGludGVncmF0aW9uIHRlc3Qgc2V0dXAgdGhhdCBydW5zIGFzIHRoZSBjb25uZWN0aW9uXG4gKiBvd25lciBiZWZvcmUgYW55IHRlbmFudCBpcyBwcm92aXNpb25lZCkuXG4gKi9cbnR5cGUgQ29udGV4dE1vZGUgPSAnc2lsZW50JyB8ICd3YXJuJyB8ICdzdHJpY3QnO1xuZnVuY3Rpb24gZ2V0Q29udGV4dE1vZGUoKTogQ29udGV4dE1vZGUge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudi5STFNfQ09OVEVYVF9NT0RFPy50b0xvd2VyQ2FzZSgpO1xuICBpZiAocmF3ID09PSAnc2lsZW50JyB8fCByYXcgPT09ICd3YXJuJyB8fCByYXcgPT09ICdzdHJpY3QnKSByZXR1cm4gcmF3O1xuICAvLyBObyBleHBsaWNpdCBvdmVycmlkZTogZmFpbC1mYXN0IGluIHByb2R1Y3Rpb24sIHdhcm4gZXZlcnl3aGVyZSBlbHNlLlxuICByZXR1cm4gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyA/ICdzdHJpY3QnIDogJ3dhcm4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbmFudENvbnRleHQge1xuICAvKiogQ2FsbGVyJ3Mgb3JnLiBVbmRlZmluZWQgZm9yIHVuLWF1dGhlbnRpY2F0ZWQgLyBzeXN0ZW0gam9icy4gKi9cbiAgb3JnSWQ/OiBzdHJpbmc7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIGNhbGxlciBpcyBhIHN5c2FkbWluIChzeXN0ZW0tb3JnIGFkbWluKS4gQnlwYXNzZXMgUkxTXG4gICAqICBwb2xpY2llcyB2aWEgdGhlIHN5c2FkbWluLWJ5cGFzcyBicmFuY2ggaW4gYGN1cnJlbnRfaXNfc3lzYWRtaW4oKWAuICovXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgLyoqIE9yZyDihpIgdGVhbSBoaWVyYXJjaHk6IHRoZSBjYWxsZXIncyBhY3RpdmUtb3JnIHBhcmVudCAocHJlc2VudCBvbmx5IHdoZW4gdGhlXG4gICAqICBhY3RpdmUgb3JnIGlzIGEgdGVhbSkuIE5vdCB1c2VkIGZvciBSTFM7IGNhcnJpZWQgc28gZG93bnN0cmVhbSBzaWRlLWVmZmVjdHNcbiAgICogIChlLmcuIGVudGl0eS1ldmVudCBjb21wbGlhbmNlIGV2YWwpIGNhbiBob25vciBwYXJlbnQgYHByb3BhZ2F0ZVRvQ2hpbGRyZW5gXG4gICAqICBydWxlcyB3aXRob3V0IGEgcmVxdWVzdCBpbiBzY29wZS4gKi9cbiAgcGFyZW50T3JnSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGVyLXJlcXVlc3QgdGVuYW50IGNvbnRleHQuIFBvcHVsYXRlZCBieSBFeHByZXNzIG1pZGRsZXdhcmUgb25jZSB0aGUgSldUXG4gKiBpcyB2YWxpZGF0ZWQ7IGNvbnN1bWVkIGJ5IGB3aXRoVGVuYW50VHhgIGFuZCBhbnkgaGVscGVyIHRoYXQgbmVlZHMgdG9cbiAqIGtub3cgXCJ3aG8gaXMgdGhlIGNhbGxlclwiIHdpdGhvdXQgcmUtZGVyaXZpbmcgZnJvbSB0aGUgcmVxdWVzdCBvYmplY3QuXG4gKi9cbmV4cG9ydCBjb25zdCB0ZW5hbnRDb250ZXh0ID0gbmV3IEFzeW5jTG9jYWxTdG9yYWdlPFRlbmFudENvbnRleHQ+KCk7XG5cbi8qKlxuICogUnVuIGBmbmAgaW5zaWRlIHRoZSBnaXZlbiB0ZW5hbnQgc2NvcGUuIFRoZSBBc3luY0xvY2FsU3RvcmFnZSBzY29wZVxuICogc3Vydml2ZXMgYWNyb3NzIGFzeW5jIGJvdW5kYXJpZXMgKFByb21pc2VzLCBzZXRUaW1lb3V0LCBldGMuKSwgc28gYW55XG4gKiBgd2l0aFRlbmFudFR4YCBjYWxsIGluc2lkZSBgZm5gIOKAlCBkaXJlY3RseSBvciB0aHJvdWdoIGFueSBkZXB0aCBvZlxuICogYXN5bmMgaGVscGVycyDigJQgcGlja3MgdXAgYGN0eGAuXG4gKlxuICogV3JhcCBgbmV4dCgpYCBmcm9tIGFuIEV4cHJlc3MgbWlkZGxld2FyZSB0byBlc3RhYmxpc2ggcGVyLXJlcXVlc3Qgc2NvcGU6XG4gKlxuICogICAgIGFwcC51c2UoKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gKiAgICAgICBydW5XaXRoVGVuYW50Q29udGV4dCh7IG9yZ0lkLCBpc1N1cGVyQWRtaW4gfSwgKCkgPT4gbmV4dCgpKTtcbiAqICAgICB9KTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bldpdGhUZW5hbnRDb250ZXh0PFQ+KGN0eDogVGVuYW50Q29udGV4dCwgZm46ICgpID0+IFQpOiBUIHtcbiAgcmV0dXJuIHRlbmFudENvbnRleHQucnVuKGN0eCwgZm4pO1xufVxuXG4vKiogUmVhZCB0aGUgY3VycmVudCB0ZW5hbnQgY29udGV4dC4gUmV0dXJucyB1bmRlZmluZWQgb3V0c2lkZSBhblxuICogIGBydW5XaXRoVGVuYW50Q29udGV4dGAgc2NvcGUgKGUuZy4gYmFja2dyb3VuZCB3b3JrZXJzLCBtaWdyYXRpb25zKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW5hbnRDb250ZXh0KCk6IFRlbmFudENvbnRleHQgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdGVuYW50Q29udGV4dC5nZXRTdG9yZSgpO1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSBjdXJyZW50IGNvZGUgaXMgcnVubmluZyBpbnNpZGUgYSB0ZW5hbnQgc2NvcGUuIENhbGxlcnNcbiAqIHRoYXQgbGVnaXRpbWF0ZWx5IG5lZWQgdG8gcmVmdXNlIHRvIG9wZXJhdGUgd2l0aG91dCBvbmUgKGUuZy4gaGFuZGxlcnNcbiAqIHRoYXQgdG91Y2ggRk9SQ0UnZCBSTFMgdGFibGVzKSBjYW4gdXNlIHRoaXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZVxuICogZG93bnN0cmVhbSBcInBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3IgdG8gc3VyZmFjZSB0aGUgYnVnLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVRlbmFudENvbnRleHQoKTogVGVuYW50Q29udGV4dCB7XG4gIGNvbnN0IGN0eCA9IHRlbmFudENvbnRleHQuZ2V0U3RvcmUoKTtcbiAgaWYgKCFjdHgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAncmVxdWlyZVRlbmFudENvbnRleHQ6IG5vIHRlbmFudCBzY29wZSBhY3RpdmUuIFdyYXAgeW91ciBoYW5kbGVyL3dvcmtlciBpbiAnXG4gICAgICArICdydW5XaXRoVGVuYW50Q29udGV4dCh7IG9yZ0lkLCBpc1N1cGVyQWRtaW4gfSwgLi4uKSBiZWZvcmUgYW55IERCIGNhbGwuJyxcbiAgICApO1xuICB9XG4gIHJldHVybiBjdHg7XG59XG5cbi8qKlxuICogT3BlbiBhIHRyYW5zYWN0aW9uIHdpdGggUkxTIEdVQ3MgU0VUIExPQ0FMIGZyb20gdGhlIGN1cnJlbnRcbiAqIEFzeW5jTG9jYWxTdG9yYWdlIHRlbmFudCBjb250ZXh0LCB0aGVuIGludm9rZSBgZm4odHgpYC5cbiAqXG4gKiAtIFdoZW4gY2FsbGVkIG91dHNpZGUgYSB0ZW5hbnQgc2NvcGUgKGUuZy4gZnJvbSBhIGJhY2tncm91bmQgam9iIHRoYXRcbiAqICAgZG9lc24ndCBoYXZlIGEgY2FsbGVyIGlkZW50aXR5KSwgdGhlIHRyYW5zYWN0aW9uIGlzIG9wZW5lZCB3aXRoIGJvdGhcbiAqICAgR1VDcyBjbGVhcmVkIOKAlCBSTFMgcG9saWNpZXMgd2lsbCByZXR1cm4gemVybyByb3dzIG9uIEZPUkNFJ2QgdGFibGVzLlxuICogICBDYWxsZXJzIHRoYXQgbmVlZCBhIHN5c2FkbWluLWVxdWl2YWxlbnQgc2NvcGUgc2hvdWxkIHdyYXAgdGhlbXNlbHZlcyBpblxuICogICBgcnVuV2l0aFRlbmFudENvbnRleHQoeyBpc1N1cGVyQWRtaW46IHRydWUgfSwg4oCmKWAgZXhwbGljaXRseS5cbiAqXG4gKiAtIFVzZXMgYHNldF9jb25maWcoa2V5LCB2YWx1ZSwgdHJ1ZSlgICh0aGUgYm9vbGVhbiA9IGBpc19sb2NhbGAsIGkuZS5cbiAqICAgdHJhbnNhY3Rpb24tc2NvcGVkKS4gRXF1aXZhbGVudCB0byBgU0VUIExPQ0FMYCBidXQgdGFrZXMgdGhlIHZhbHVlIGFzXG4gKiAgIGEgcGFyYW1ldGVyLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQg4oCUIERyaXp6bGUncyBgc3FsYCB0ZW1wbGF0ZSBiaW5kcyB0aGVcbiAqICAgdmFsdWUgc2FmZWx5IHNvIGFuIGF0dGFja2VyLWNvbnRyb2xsZWQgYG9yZ0lkYCBjYW4ndCBlc2NhcGUgdGhlIHF1b3RpbmcuXG4gKlxuICogLSBSZXR1cm5zIHdoYXRldmVyIGBmbmAgcmV0dXJuczsgdGhyb3dzIHdoYXRldmVyIGBmbmAgdGhyb3dzIChEcml6emxlXG4gKiAgIGhhbmRsZXMgdGhlIENPTU1JVC9ST0xMQkFDSyBmb3IgdXMpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFRlbmFudFR4PFQ+KFxuICBmbjogKHR4OiBQYXJhbWV0ZXJzPFBhcmFtZXRlcnM8dHlwZW9mIGRiLnRyYW5zYWN0aW9uPlswXT5bMF0pID0+IFByb21pc2U8VD4sXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgY3R4ID0gdGVuYW50Q29udGV4dC5nZXRTdG9yZSgpO1xuXG4gIGlmICghY3R4KSB7XG4gICAgLy8gU3VyZmFjZSB0aGUgYnVnIGluc3RlYWQgb2Ygc2lsZW50bHkgU0VUJ2luZyBlbXB0eSBHVUNzLiBUaGUgZGVmYXVsdFxuICAgIC8vIG1vZGUgKCd3YXJuJykgbG9ncyBhbiBhY3Rpb25hYmxlIHRyYWNlIHNvIHRoZSBiYWQgY2FsbCBzaXRlIGlzIGVhc3lcbiAgICAvLyB0byBmaW5kOyBwcm9kdWN0aW9uIGRlcGxveW1lbnRzIHRoYXQgaGF2ZSBmaW5pc2hlZCB0aGUgYXVkaXQgY2FuIHNldFxuICAgIC8vIFJMU19DT05URVhUX01PREU9c3RyaWN0IHRvIGZhaWwtZmFzdCBhdCB0aGUgY2FsbCBzaXRlIChiZXR0ZXIgc3RhY2tcbiAgICAvLyB0cmFjZSB0aGFuIHRoZSBQb3N0Z3JlcyBcInBlcm1pc3Npb24gZGVuaWVkXCIgdGhhdCB3b3VsZCBvdGhlcndpc2VcbiAgICAvLyBzdXJmYWNlIGZyb20gRk9SQ0UnZCBSTFMpLlxuICAgIGNvbnN0IG1vZGUgPSBnZXRDb250ZXh0TW9kZSgpO1xuICAgIGlmIChtb2RlID09PSAnc3RyaWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnd2l0aFRlbmFudFR4IGNhbGxlZCBvdXRzaWRlIGEgdGVuYW50IHNjb3BlLiBXcmFwIHlvdXIgaGFuZGxlci93b3JrZXIgJ1xuICAgICAgICArICdpbiBydW5XaXRoVGVuYW50Q29udGV4dCh7IG9yZ0lkLCBpc1N1cGVyQWRtaW4gfSwgLi4uKSBiZWZvcmUgaW52b2tpbmcgJ1xuICAgICAgICArICdhbnkgc2VydmljZSB0aGF0IHRvdWNoZXMgUkxTLWVuZm9yY2VkIHRhYmxlcy4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG1vZGUgPT09ICd3YXJuJykge1xuICAgICAgLy8gSW5jbHVkZSBhIHN5bnRoZXRpYyBzdGFjayBzbyB0aGUgb2ZmZW5kaW5nIGNhbGwgc2l0ZSBpcyBpbiB0aGUgbG9nLlxuICAgICAgbG9nZ2VyLndhcm4oJ3dpdGhUZW5hbnRUeCBjYWxsZWQgb3V0c2lkZSBhIHRlbmFudCBzY29wZTsgUkxTIEdVQ3Mgd2lsbCBiZSBlbXB0eScsIHtcbiAgICAgICAgc3RhY2s6IG5ldyBFcnJvcigndGVuYW50LWNvbnRleHQgbWlzc2luZycpLnN0YWNrLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JnSWQgPSBjdHg/Lm9yZ0lkID8/ICcnO1xuICBjb25zdCBpc1N1cGVyQWRtaW4gPSBjdHg/LmlzU3VwZXJBZG1pbiA/ICd0cnVlJyA6ICdmYWxzZSc7XG5cbiAgcmV0dXJuIGRiLnRyYW5zYWN0aW9uKGFzeW5jICh0eCkgPT4ge1xuICAgIC8vIFNFVCBMT0NBTCB2aWEgc2V0X2NvbmZpZygpIHNvIHRoZSB2YWx1ZXMgYXJlIHRyYW5zYWN0aW9uLXNjb3BlZCAoYXV0by1cbiAgICAvLyByZWxlYXNlZCBvbiBDT01NSVQvUk9MTEJBQ0spLiBUaGUgZHJpdmVyIGJpbmRzIHRoZSB2YWx1ZXMgYXMgcGFyYW1ldGVycyxcbiAgICAvLyBzbyBhIGhvc3RpbGUgb3JnX2lkIGNhbid0IGJyZWFrIG91dCBvZiB0aGUgR1VDIHN5bnRheC5cbiAgICBhd2FpdCB0eC5leGVjdXRlKHNxbGBTRUxFQ1Qgc2V0X2NvbmZpZygnYXBwLm9yZ19pZCcsICR7b3JnSWR9LCB0cnVlKWApO1xuICAgIGF3YWl0IHR4LmV4ZWN1dGUoc3FsYFNFTEVDVCBzZXRfY29uZmlnKCdhcHAuaXNfc3lzYWRtaW4nLCAke2lzU3VwZXJBZG1pbn0sIHRydWUpYCk7XG4gICAgcmV0dXJuIGZuKHR4KTtcbiAgfSk7XG59XG4iXX0=
package/package.json CHANGED
@@ -24,7 +24,7 @@
24
24
  "dependencies": {
25
25
  "drizzle-orm": "0.45.2",
26
26
  "pg": "8.21.0",
27
- "@pipeline-builder/api-core": "3.4.83"
27
+ "@pipeline-builder/api-core": "3.4.85"
28
28
  },
29
29
  "keywords": [
30
30
  "ci-cd",
@@ -80,7 +80,7 @@
80
80
  "access": "public",
81
81
  "registry": "https://registry.npmjs.org/"
82
82
  },
83
- "version": "3.4.86",
83
+ "version": "3.4.88",
84
84
  "bugs": {
85
85
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
86
86
  },