@pipeline-builder/pipeline-data 0.0.1
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/LICENSE +202 -0
- package/README.md +61 -0
- package/drizzle.config.ts +17 -0
- package/lib/api/access-control-builder.d.ts +148 -0
- package/lib/api/access-control-builder.js +199 -0
- package/lib/api/crud-service.d.ts +343 -0
- package/lib/api/crud-service.js +849 -0
- package/lib/api/query-builders.d.ts +82 -0
- package/lib/api/query-builders.js +460 -0
- package/lib/api/reporting-service.d.ts +685 -0
- package/lib/api/reporting-service.js +1564 -0
- package/lib/api/soft-delete-sweep.d.ts +65 -0
- package/lib/api/soft-delete-sweep.js +124 -0
- package/lib/api/viewer-context.d.ts +29 -0
- package/lib/api/viewer-context.js +63 -0
- package/lib/core/query-filters.d.ts +263 -0
- package/lib/core/query-filters.js +4 -0
- package/lib/database/drizzle-schema.d.ts +7357 -0
- package/lib/database/drizzle-schema.js +66 -0
- package/lib/database/index.d.ts +5 -0
- package/lib/database/index.js +8 -0
- package/lib/database/migrator.d.ts +20 -0
- package/lib/database/migrator.js +80 -0
- package/lib/database/postgres-connection.d.ts +201 -0
- package/lib/database/postgres-connection.js +413 -0
- package/lib/database/retry-strategy.d.ts +68 -0
- package/lib/database/retry-strategy.js +122 -0
- package/lib/database/schema/alert.d.ts +588 -0
- package/lib/database/schema/alert.js +130 -0
- package/lib/database/schema/compliance.d.ts +3319 -0
- package/lib/database/schema/compliance.js +377 -0
- package/lib/database/schema/dashboard.d.ts +474 -0
- package/lib/database/schema/dashboard.js +129 -0
- package/lib/database/schema/message-attachment.d.ts +183 -0
- package/lib/database/schema/message-attachment.js +40 -0
- package/lib/database/schema/message.d.ts +411 -0
- package/lib/database/schema/message.js +114 -0
- package/lib/database/schema/pipeline-template.d.ts +466 -0
- package/lib/database/schema/pipeline-template.js +80 -0
- package/lib/database/schema/pipeline.d.ts +1613 -0
- package/lib/database/schema/pipeline.js +332 -0
- package/lib/database/schema/plugin.d.ts +749 -0
- package/lib/database/schema/plugin.js +166 -0
- package/lib/database/tenancy.d.ts +103 -0
- package/lib/database/tenancy.js +167 -0
- package/lib/index.d.ts +32 -0
- package/lib/index.js +38 -0
- package/package.json +161 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { SYSTEM_ORG_ID, } from '@pipeline-builder/api-core';
|
|
4
|
+
import { sql } from 'drizzle-orm';
|
|
5
|
+
import { boolean, varchar, pgTable, text, timestamp, uuid, jsonb, index, uniqueIndex } from 'drizzle-orm/pg-core';
|
|
6
|
+
/**
|
|
7
|
+
* Golden-path pipeline templates. A template is a parameterized starter: its
|
|
8
|
+
* `props` is a BuilderProps body with `{{ vars.* }}` placeholders, and `inputs`
|
|
9
|
+
* declares the variables a developer fills in when instantiating it into a real
|
|
10
|
+
* pipeline. System-org public templates form the shared golden-path catalog
|
|
11
|
+
* (visible to every org, same pattern as the sample template catalog / compliance templates).
|
|
12
|
+
*
|
|
13
|
+
* Visibility ladder (three rungs, like `dashboards` — NOT the catalog-wide
|
|
14
|
+
* three-value `visibility` that pipelines/plugins carry):
|
|
15
|
+
* - `private` — only the author (`created_by`) can read/write it; a personal draft
|
|
16
|
+
* - `org` — anyone in the owning org can read it; `pipelines:write` edits it
|
|
17
|
+
* - `public` — shared beyond the org: a team also sees its parent org's public
|
|
18
|
+
* templates, and the system org's public templates are the shared
|
|
19
|
+
* golden-path catalog every org sees. Needs `pipelines:publish`.
|
|
20
|
+
* The read predicate lives in `buildPipelineTemplateConditions`; the write gate
|
|
21
|
+
* in api-core's `requireTemplateWriteAccess`.
|
|
22
|
+
*
|
|
23
|
+
* @table pipeline_templates
|
|
24
|
+
*/
|
|
25
|
+
export const pipelineTemplate = pgTable('pipeline_templates', {
|
|
26
|
+
id: uuid('id').primaryKey().defaultRandom(),
|
|
27
|
+
orgId: varchar('org_id', { length: 255 }).default(SYSTEM_ORG_ID).notNull(),
|
|
28
|
+
// Audit
|
|
29
|
+
createdBy: text('created_by').default(SYSTEM_ORG_ID).notNull(),
|
|
30
|
+
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
31
|
+
updatedBy: text('updated_by').default(SYSTEM_ORG_ID).notNull(),
|
|
32
|
+
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
|
|
33
|
+
// Core template information
|
|
34
|
+
name: varchar('name', { length: 255 }).notNull(),
|
|
35
|
+
description: text('description'),
|
|
36
|
+
keywords: jsonb('keywords').$type().default([]).notNull(),
|
|
37
|
+
category: varchar('category', { length: 50 }).default('general').notNull(),
|
|
38
|
+
// Template body: a BuilderProps with `{{ vars.* }}` placeholders. Typed loosely
|
|
39
|
+
// because a template may omit concrete project/organization until instantiated.
|
|
40
|
+
props: jsonb('props').$type().notNull(),
|
|
41
|
+
// Declared inputs (the `vars.*` contract a developer fills in to instantiate).
|
|
42
|
+
inputs: jsonb('inputs').$type().default([]).notNull(),
|
|
43
|
+
// Developer-portal catalog metadata (ownership / lifecycle / classification)
|
|
44
|
+
ownerId: text('owner_id'),
|
|
45
|
+
ownerType: varchar('owner_type', { length: 10 }).$type(),
|
|
46
|
+
lifecycle: varchar('lifecycle', { length: 20 }).$type().default('production').notNull(),
|
|
47
|
+
criticality: varchar('criticality', { length: 10 }).$type(),
|
|
48
|
+
labels: jsonb('labels').$type().default({}).notNull(),
|
|
49
|
+
links: jsonb('links').$type().default([]).notNull(),
|
|
50
|
+
// Access and visibility — see the header for the ladder. Constrained at the
|
|
51
|
+
// SQL layer too via a CHECK in postgres-init.sql so a typo can't sneak past
|
|
52
|
+
// the application layer.
|
|
53
|
+
visibility: varchar('visibility', { length: 10 })
|
|
54
|
+
.$type()
|
|
55
|
+
.default('private')
|
|
56
|
+
.notNull(),
|
|
57
|
+
isDefault: boolean('is_default').default(false).notNull(),
|
|
58
|
+
isActive: boolean('is_active').default(true).notNull(),
|
|
59
|
+
// Soft delete
|
|
60
|
+
deletedAt: timestamp('deleted_at', { withTimezone: true }),
|
|
61
|
+
deletedBy: text('deleted_by'),
|
|
62
|
+
// Soft-delete purge deadline: the retention sweep hard-deletes tombstoned
|
|
63
|
+
// rows once `purge_after` has passed (set on delete alongside deleted_at).
|
|
64
|
+
purgeAfter: timestamp('purge_after', { withTimezone: true }),
|
|
65
|
+
}, (table) => ({
|
|
66
|
+
// Partial index over just the tombstones — drives the retention purge sweep.
|
|
67
|
+
purgeIdx: index('pipeline_template_purge_idx').on(table.purgeAfter).where(sql `deleted_at IS NOT NULL`),
|
|
68
|
+
orgIdIdx: index('pipeline_template_org_id_idx').on(table.orgId),
|
|
69
|
+
activeIdx: index('pipeline_template_active_idx').on(table.isActive),
|
|
70
|
+
categoryIdx: index('pipeline_template_category_idx').on(table.category),
|
|
71
|
+
// Listing is org-scoped, visibility-filtered and active-only, so all three go in.
|
|
72
|
+
orgVisibilityActiveIdx: index('pipeline_template_org_visibility_active_idx').on(table.orgId, table.visibility, table.isActive),
|
|
73
|
+
// Drives the "my private drafts" leg of the visibility predicate.
|
|
74
|
+
createdByIdx: index('pipeline_template_created_by_idx').on(table.orgId, table.createdBy),
|
|
75
|
+
ownerIdx: index('pipeline_template_owner_idx').on(table.orgId, table.ownerId),
|
|
76
|
+
lifecycleIdx: index('pipeline_template_lifecycle_idx').on(table.orgId, table.lifecycle),
|
|
77
|
+
// One template name per org.
|
|
78
|
+
nameOrgUnique: uniqueIndex('pipeline_template_name_org_unique').on(table.name, table.orgId),
|
|
79
|
+
}));
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YWJhc2Uvc2NoZW1hL3BpcGVsaW5lLXRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUNMLGFBQWEsR0FRZCxNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEg7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtJQUM1RCxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUUzQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFMUUsUUFBUTtJQUNSLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM5RCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUNqRixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDOUQsU0FB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QUF3QixDQUFDO0lBQ3RHLFFBQVEsRUFBRSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMvRCxTQUFTLEVBQUUsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDbkUsV0FBVyxFQUFFLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ3ZFLGtGQUFrRjtJQUNsRixzQkFBc0IsRUFBRSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDOUgsa0VBQWtFO0lBQ2xFLFlBQVksRUFBRSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ3hGLFFBQVEsRUFBRSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzdFLFlBQVksRUFBRSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ3ZGLDZCQUE2QjtJQUM3QixhQUFhLEVBQUUsV0FBVyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztDQUM1RixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQge1xuICBTWVNURU1fT1JHX0lELFxuICB0eXBlIENyaXRpY2FsaXR5LFxuICB0eXBlIEVudGl0eUxhYmVscyxcbiAgdHlwZSBFbnRpdHlMaW5rLFxuICB0eXBlIExpZmVjeWNsZSxcbiAgdHlwZSBPd25lclR5cGUsXG4gIHR5cGUgVGVtcGxhdGVJbnB1dCxcbiAgdHlwZSBWaXNpYmlsaXR5LFxufSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQgeyBib29sZWFuLCB2YXJjaGFyLCBwZ1RhYmxlLCB0ZXh0LCB0aW1lc3RhbXAsIHV1aWQsIGpzb25iLCBpbmRleCwgdW5pcXVlSW5kZXggfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcblxuLyoqXG4gKiBHb2xkZW4tcGF0aCBwaXBlbGluZSB0ZW1wbGF0ZXMuIEEgdGVtcGxhdGUgaXMgYSBwYXJhbWV0ZXJpemVkIHN0YXJ0ZXI6IGl0c1xuICogYHByb3BzYCBpcyBhIEJ1aWxkZXJQcm9wcyBib2R5IHdpdGggYHt7IHZhcnMuKiB9fWAgcGxhY2Vob2xkZXJzLCBhbmQgYGlucHV0c2BcbiAqIGRlY2xhcmVzIHRoZSB2YXJpYWJsZXMgYSBkZXZlbG9wZXIgZmlsbHMgaW4gd2hlbiBpbnN0YW50aWF0aW5nIGl0IGludG8gYSByZWFsXG4gKiBwaXBlbGluZS4gU3lzdGVtLW9yZyBwdWJsaWMgdGVtcGxhdGVzIGZvcm0gdGhlIHNoYXJlZCBnb2xkZW4tcGF0aCBjYXRhbG9nXG4gKiAodmlzaWJsZSB0byBldmVyeSBvcmcsIHNhbWUgcGF0dGVybiBhcyB0aGUgc2FtcGxlIHRlbXBsYXRlIGNhdGFsb2cgLyBjb21wbGlhbmNlIHRlbXBsYXRlcykuXG4gKlxuICogVmlzaWJpbGl0eSBsYWRkZXIgKHRocmVlIHJ1bmdzLCBsaWtlIGBkYXNoYm9hcmRzYCDigJQgTk9UIHRoZSBjYXRhbG9nLXdpZGVcbiAqIHRocmVlLXZhbHVlIGB2aXNpYmlsaXR5YCB0aGF0IHBpcGVsaW5lcy9wbHVnaW5zIGNhcnJ5KTpcbiAqIC0gYHByaXZhdGVgIOKAlCBvbmx5IHRoZSBhdXRob3IgKGBjcmVhdGVkX2J5YCkgY2FuIHJlYWQvd3JpdGUgaXQ7IGEgcGVyc29uYWwgZHJhZnRcbiAqIC0gYG9yZ2AgICAgIOKAlCBhbnlvbmUgaW4gdGhlIG93bmluZyBvcmcgY2FuIHJlYWQgaXQ7IGBwaXBlbGluZXM6d3JpdGVgIGVkaXRzIGl0XG4gKiAtIGBwdWJsaWNgICDigJQgc2hhcmVkIGJleW9uZCB0aGUgb3JnOiBhIHRlYW0gYWxzbyBzZWVzIGl0cyBwYXJlbnQgb3JnJ3MgcHVibGljXG4gKiAgICAgICAgICAgICAgIHRlbXBsYXRlcywgYW5kIHRoZSBzeXN0ZW0gb3JnJ3MgcHVibGljIHRlbXBsYXRlcyBhcmUgdGhlIHNoYXJlZFxuICogICAgICAgICAgICAgICBnb2xkZW4tcGF0aCBjYXRhbG9nIGV2ZXJ5IG9yZyBzZWVzLiBOZWVkcyBgcGlwZWxpbmVzOnB1Ymxpc2hgLlxuICogVGhlIHJlYWQgcHJlZGljYXRlIGxpdmVzIGluIGBidWlsZFBpcGVsaW5lVGVtcGxhdGVDb25kaXRpb25zYDsgdGhlIHdyaXRlIGdhdGVcbiAqIGluIGFwaS1jb3JlJ3MgYHJlcXVpcmVUZW1wbGF0ZVdyaXRlQWNjZXNzYC5cbiAqXG4gKiBAdGFibGUgcGlwZWxpbmVfdGVtcGxhdGVzXG4gKi9cbmV4cG9ydCBjb25zdCBwaXBlbGluZVRlbXBsYXRlID0gcGdUYWJsZSgncGlwZWxpbmVfdGVtcGxhdGVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLmRlZmF1bHQoU1lTVEVNX09SR19JRCkubm90TnVsbCgpLFxuXG4gIC8vIEF1ZGl0XG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLmRlZmF1bHQoU1lTVEVNX09SR19JRCkubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLmRlZmF1bHQoU1lTVEVNX09SR19JRCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG5cbiAgLy8gQ29yZSB0ZW1wbGF0ZSBpbmZvcm1hdGlvblxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJykuJHR5cGU8c3RyaW5nW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICBjYXRlZ29yeTogdmFyY2hhcignY2F0ZWdvcnknLCB7IGxlbmd0aDogNTAgfSkuZGVmYXVsdCgnZ2VuZXJhbCcpLm5vdE51bGwoKSxcblxuICAvLyBUZW1wbGF0ZSBib2R5OiBhIEJ1aWxkZXJQcm9wcyB3aXRoIGB7eyB2YXJzLiogfX1gIHBsYWNlaG9sZGVycy4gVHlwZWQgbG9vc2VseVxuICAvLyBiZWNhdXNlIGEgdGVtcGxhdGUgbWF5IG9taXQgY29uY3JldGUgcHJvamVjdC9vcmdhbml6YXRpb24gdW50aWwgaW5zdGFudGlhdGVkLlxuICBwcm9wczoganNvbmIoJ3Byb3BzJykuJHR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCkubm90TnVsbCgpLFxuICAvLyBEZWNsYXJlZCBpbnB1dHMgKHRoZSBgdmFycy4qYCBjb250cmFjdCBhIGRldmVsb3BlciBmaWxscyBpbiB0byBpbnN0YW50aWF0ZSkuXG4gIGlucHV0czoganNvbmIoJ2lucHV0cycpLiR0eXBlPFRlbXBsYXRlSW5wdXRbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG5cbiAgLy8gRGV2ZWxvcGVyLXBvcnRhbCBjYXRhbG9nIG1ldGFkYXRhIChvd25lcnNoaXAgLyBsaWZlY3ljbGUgLyBjbGFzc2lmaWNhdGlvbilcbiAgb3duZXJJZDogdGV4dCgnb3duZXJfaWQnKSxcbiAgb3duZXJUeXBlOiB2YXJjaGFyKCdvd25lcl90eXBlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPE93bmVyVHlwZT4oKSxcbiAgbGlmZWN5Y2xlOiB2YXJjaGFyKCdsaWZlY3ljbGUnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8TGlmZWN5Y2xlPigpLmRlZmF1bHQoJ3Byb2R1Y3Rpb24nIGFzIExpZmVjeWNsZSkubm90TnVsbCgpLFxuICBjcml0aWNhbGl0eTogdmFyY2hhcignY3JpdGljYWxpdHknLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8Q3JpdGljYWxpdHk+KCksXG4gIGxhYmVsczoganNvbmIoJ2xhYmVscycpLiR0eXBlPEVudGl0eUxhYmVscz4oKS5kZWZhdWx0KHt9KS5ub3ROdWxsKCksXG4gIGxpbmtzOiBqc29uYignbGlua3MnKS4kdHlwZTxFbnRpdHlMaW5rW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuXG4gIC8vIEFjY2VzcyBhbmQgdmlzaWJpbGl0eSDigJQgc2VlIHRoZSBoZWFkZXIgZm9yIHRoZSBsYWRkZXIuIENvbnN0cmFpbmVkIGF0IHRoZVxuICAvLyBTUUwgbGF5ZXIgdG9vIHZpYSBhIENIRUNLIGluIHBvc3RncmVzLWluaXQuc3FsIHNvIGEgdHlwbyBjYW4ndCBzbmVhayBwYXN0XG4gIC8vIHRoZSBhcHBsaWNhdGlvbiBsYXllci5cbiAgdmlzaWJpbGl0eTogdmFyY2hhcigndmlzaWJpbGl0eScsIHsgbGVuZ3RoOiAxMCB9KVxuICAgIC4kdHlwZTxWaXNpYmlsaXR5PigpXG4gICAgLmRlZmF1bHQoJ3ByaXZhdGUnKVxuICAgIC5ub3ROdWxsKCksXG4gIGlzRGVmYXVsdDogYm9vbGVhbignaXNfZGVmYXVsdCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuXG4gIC8vIFNvZnQgZGVsZXRlXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxuICAvLyBTb2Z0LWRlbGV0ZSBwdXJnZSBkZWFkbGluZTogdGhlIHJldGVudGlvbiBzd2VlcCBoYXJkLWRlbGV0ZXMgdG9tYnN0b25lZFxuICAvLyByb3dzIG9uY2UgYHB1cmdlX2FmdGVyYCBoYXMgcGFzc2VkIChzZXQgb24gZGVsZXRlIGFsb25nc2lkZSBkZWxldGVkX2F0KS5cbiAgcHVyZ2VBZnRlcjogdGltZXN0YW1wKCdwdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBQYXJ0aWFsIGluZGV4IG92ZXIganVzdCB0aGUgdG9tYnN0b25lcyDigJQgZHJpdmVzIHRoZSByZXRlbnRpb24gcHVyZ2Ugc3dlZXAuXG4gIHB1cmdlSWR4OiBpbmRleCgncGlwZWxpbmVfdGVtcGxhdGVfcHVyZ2VfaWR4Jykub24odGFibGUucHVyZ2VBZnRlcikud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTk9UIE5VTExgKSxcbiAgb3JnSWRJZHg6IGluZGV4KCdwaXBlbGluZV90ZW1wbGF0ZV9vcmdfaWRfaWR4Jykub24odGFibGUub3JnSWQpLFxuICBhY3RpdmVJZHg6IGluZGV4KCdwaXBlbGluZV90ZW1wbGF0ZV9hY3RpdmVfaWR4Jykub24odGFibGUuaXNBY3RpdmUpLFxuICBjYXRlZ29yeUlkeDogaW5kZXgoJ3BpcGVsaW5lX3RlbXBsYXRlX2NhdGVnb3J5X2lkeCcpLm9uKHRhYmxlLmNhdGVnb3J5KSxcbiAgLy8gTGlzdGluZyBpcyBvcmctc2NvcGVkLCB2aXNpYmlsaXR5LWZpbHRlcmVkIGFuZCBhY3RpdmUtb25seSwgc28gYWxsIHRocmVlIGdvIGluLlxuICBvcmdWaXNpYmlsaXR5QWN0aXZlSWR4OiBpbmRleCgncGlwZWxpbmVfdGVtcGxhdGVfb3JnX3Zpc2liaWxpdHlfYWN0aXZlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS52aXNpYmlsaXR5LCB0YWJsZS5pc0FjdGl2ZSksXG4gIC8vIERyaXZlcyB0aGUgXCJteSBwcml2YXRlIGRyYWZ0c1wiIGxlZyBvZiB0aGUgdmlzaWJpbGl0eSBwcmVkaWNhdGUuXG4gIGNyZWF0ZWRCeUlkeDogaW5kZXgoJ3BpcGVsaW5lX3RlbXBsYXRlX2NyZWF0ZWRfYnlfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRCeSksXG4gIG93bmVySWR4OiBpbmRleCgncGlwZWxpbmVfdGVtcGxhdGVfb3duZXJfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLm93bmVySWQpLFxuICBsaWZlY3ljbGVJZHg6IGluZGV4KCdwaXBlbGluZV90ZW1wbGF0ZV9saWZlY3ljbGVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmxpZmVjeWNsZSksXG4gIC8vIE9uZSB0ZW1wbGF0ZSBuYW1lIHBlciBvcmcuXG4gIG5hbWVPcmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdwaXBlbGluZV90ZW1wbGF0ZV9uYW1lX29yZ191bmlxdWUnKS5vbih0YWJsZS5uYW1lLCB0YWJsZS5vcmdJZCksXG59KSk7XG5cbmV4cG9ydCB0eXBlIFBpcGVsaW5lVGVtcGxhdGUgPSB0eXBlb2YgcGlwZWxpbmVUZW1wbGF0ZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQaXBlbGluZVRlbXBsYXRlSW5zZXJ0ID0gdHlwZW9mIHBpcGVsaW5lVGVtcGxhdGUuJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVUZW1wbGF0ZVVwZGF0ZSA9IFBhcnRpYWw8T21pdDxQaXBlbGluZVRlbXBsYXRlSW5zZXJ0LCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAnY3JlYXRlZEJ5Jz4+O1xuIl19
|