From 10e080917a5085b0b2b29c00ce38294bbe305076 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Feb 2026 15:20:46 +0000 Subject: [PATCH 1/3] Initial plan From 94d5a5cd2eaa62ebf28bc81c6ab3a5a710b2e5fa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Feb 2026 15:26:02 +0000 Subject: [PATCH 2/3] Fix ES module directory import error by adding ./types subpath export Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com> --- ...objectstack.config.bundled_hh4jovlepqw.mjs | 151 ++++++++++++++++++ packages/core/package.json | 4 + 2 files changed, 155 insertions(+) create mode 100644 examples/crm/objectstack.config.bundled_hh4jovlepqw.mjs diff --git a/examples/crm/objectstack.config.bundled_hh4jovlepqw.mjs b/examples/crm/objectstack.config.bundled_hh4jovlepqw.mjs new file mode 100644 index 000000000..c7e8c6a7e --- /dev/null +++ b/examples/crm/objectstack.config.bundled_hh4jovlepqw.mjs @@ -0,0 +1,151 @@ +// objectstack.config.ts +import { defineStack } from "@objectstack/spec"; +import { App } from "@objectstack/spec/ui"; + +// src/objects/account.object.ts +import { ObjectSchema, Field } from "@objectstack/spec/data"; +var AccountObject = ObjectSchema.create({ + name: "account", + label: "Account", + fields: { + name: Field.text({ label: "Account Name", required: true }), + industry: Field.text({ label: "Industry" }) + } +}); + +// src/objects/contact.object.ts +import { ObjectSchema as ObjectSchema2, Field as Field2 } from "@objectstack/spec/data"; +var ContactObject = ObjectSchema2.create({ + name: "contact", + label: "Contact", + fields: { + name: Field2.text({ label: "Name", required: true }), + email: Field2.email({ label: "Email" }), + phone: Field2.text({ label: "Phone" }), + title: Field2.text({ label: "Title" }), + company: Field2.text({ label: "Company" }), + status: Field2.select(["Active", "Lead", "Customer"], { label: "Status" }), + priority: Field2.number({ label: "Priority", defaultValue: 5 }), + is_active: Field2.boolean({ label: "Active", defaultValue: true }), + notes: Field2.textarea({ label: "Notes" }) + } +}); + +// src/objects/opportunity.object.ts +import { ObjectSchema as ObjectSchema3, Field as Field3 } from "@objectstack/spec/data"; +var OpportunityObject = ObjectSchema3.create({ + name: "opportunity", + label: "Opportunity", + fields: { + name: Field3.text({ label: "Opportunity Name", required: true }), + amount: Field3.currency({ label: "Amount" }), + stage: Field3.select(["Prospecting", "Proposal", "Negotiation", "Closed Won", "Closed Lost"], { label: "Stage" }), + close_date: Field3.date({ label: "Close Date" }), + account_id: Field3.lookup("account", { label: "Account" }), + contact_ids: Field3.lookup("contact", { label: "Contacts", multiple: true }), + description: Field3.textarea({ label: "Description" }) + } +}); + +// objectstack.config.ts +var objectstack_config_default = defineStack({ + objects: [ + AccountObject, + ContactObject, + OpportunityObject + ], + apps: [ + App.create({ + name: "crm_app", + label: "CRM", + icon: "users", + navigation: [ + { + id: "nav_contacts", + type: "object", + objectName: "contact", + label: "Contacts" + }, + { + id: "nav_opportunities", + type: "object", + objectName: "opportunity", + label: "Opportunities" + }, + { + id: "nav_accounts", + type: "object", + objectName: "account", + label: "Accounts" + } + ] + }) + ], + manifest: { + id: "com.example.crm", + version: "1.0.0", + type: "app", + name: "CRM Example", + description: "CRM App Definition", + data: [ + { + object: "account", + mode: "upsert", + records: [ + { _id: "1", name: "TechCorp" }, + { _id: "2", name: "Software Inc" }, + { _id: "3", name: "Good Grief LLC" } + ] + }, + { + object: "contact", + mode: "upsert", + records: [ + { _id: "1", name: "Alice Johnson", email: "alice@example.com", phone: "555-0101", title: "VP Sales", company: "TechCorp", status: "Active" }, + { _id: "2", name: "Bob Smith", email: "bob@tech.com", phone: "555-0102", title: "Developer", company: "Software Inc", status: "Lead" }, + { _id: "3", name: "Charlie Brown", email: "charlie@peanuts.com", phone: "555-0103", title: "Manager", company: "Good Grief LLC", status: "Customer" } + ] + }, + { + object: "opportunity", + mode: "upsert", + records: [ + { + _id: "101", + name: "TechCorp Enterprise License", + amount: 5e4, + stage: "Proposal", + close_date: /* @__PURE__ */ new Date("2024-06-30"), + account_id: "1", + contact_ids: ["1", "2"], + description: "Enterprise software license for 500 users. Includes premium support and training." + }, + { + _id: "102", + name: "Software Inc Pilot", + amount: 5e3, + stage: "Closed Won", + close_date: /* @__PURE__ */ new Date("2024-01-15"), + account_id: "2", + contact_ids: ["2"], + description: "Pilot program for 50 users." + }, + { + _id: "103", + name: "Good Grief Consultant", + amount: 12e3, + stage: "Negotiation", + close_date: /* @__PURE__ */ new Date("2024-05-20"), + account_id: "3", + contact_ids: ["3"], + description: "Consulting services for Q2 implementation." + } + ] + } + ] + } +}); +export { + objectstack_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsib2JqZWN0c3RhY2suY29uZmlnLnRzIiwgInNyYy9vYmplY3RzL2FjY291bnQub2JqZWN0LnRzIiwgInNyYy9vYmplY3RzL2NvbnRhY3Qub2JqZWN0LnRzIiwgInNyYy9vYmplY3RzL29wcG9ydHVuaXR5Lm9iamVjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX19pbmplY3RlZF9maWxlbmFtZV9fID0gXCIvaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vb2JqZWN0c3RhY2suY29uZmlnLnRzXCI7Y29uc3QgX19pbmplY3RlZF9kaXJuYW1lX18gPSBcIi9ob21lL3J1bm5lci93b3JrL29iamVjdHVpL29iamVjdHVpL2V4YW1wbGVzL2NybVwiO2NvbnN0IF9faW5qZWN0ZWRfaW1wb3J0X21ldGFfdXJsX18gPSBcImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vb2JqZWN0c3RhY2suY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lU3RhY2sgfSBmcm9tICdAb2JqZWN0c3RhY2svc3BlYyc7XG5pbXBvcnQgeyBBcHAgfSBmcm9tICdAb2JqZWN0c3RhY2svc3BlYy91aSc7XG5pbXBvcnQgeyBBY2NvdW50T2JqZWN0IH0gZnJvbSAnLi9zcmMvb2JqZWN0cy9hY2NvdW50Lm9iamVjdCc7XG5pbXBvcnQgeyBDb250YWN0T2JqZWN0IH0gZnJvbSAnLi9zcmMvb2JqZWN0cy9jb250YWN0Lm9iamVjdCc7XG5pbXBvcnQgeyBPcHBvcnR1bml0eU9iamVjdCB9IGZyb20gJy4vc3JjL29iamVjdHMvb3Bwb3J0dW5pdHkub2JqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lU3RhY2soe1xuICBvYmplY3RzOiBbXG4gICAgQWNjb3VudE9iamVjdCxcbiAgICBDb250YWN0T2JqZWN0LFxuICAgIE9wcG9ydHVuaXR5T2JqZWN0XG4gIF0sXG4gIGFwcHM6IFtcbiAgICBBcHAuY3JlYXRlKHtcbiAgICAgIG5hbWU6ICdjcm1fYXBwJyxcbiAgICAgIGxhYmVsOiAnQ1JNJyxcbiAgICAgIGljb246ICd1c2VycycsXG4gICAgICBuYXZpZ2F0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ25hdl9jb250YWN0cycsXG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgb2JqZWN0TmFtZTogJ2NvbnRhY3QnLFxuICAgICAgICAgIGxhYmVsOiAnQ29udGFjdHMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ25hdl9vcHBvcnR1bml0aWVzJyxcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBvYmplY3ROYW1lOiAnb3Bwb3J0dW5pdHknLFxuICAgICAgICAgIGxhYmVsOiAnT3Bwb3J0dW5pdGllcydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnbmF2X2FjY291bnRzJyxcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBvYmplY3ROYW1lOiAnYWNjb3VudCcsXG4gICAgICAgICAgbGFiZWw6ICdBY2NvdW50cydcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pXG4gIF0sXG4gIG1hbmlmZXN0OiB7XG4gICAgaWQ6ICdjb20uZXhhbXBsZS5jcm0nLFxuICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgdHlwZTogJ2FwcCcsXG4gICAgbmFtZTogJ0NSTSBFeGFtcGxlJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NSTSBBcHAgRGVmaW5pdGlvbicsXG4gICAgZGF0YTogW1xuICAgICAge1xuICAgICAgICBvYmplY3Q6ICdhY2NvdW50JyxcbiAgICAgICAgbW9kZTogJ3Vwc2VydCcsXG4gICAgICAgIHJlY29yZHM6IFtcbiAgICAgICAgICB7IF9pZDogXCIxXCIsIG5hbWU6IFwiVGVjaENvcnBcIiB9LFxuICAgICAgICAgIHsgX2lkOiBcIjJcIiwgbmFtZTogXCJTb2Z0d2FyZSBJbmNcIiB9LFxuICAgICAgICAgIHsgX2lkOiBcIjNcIiwgbmFtZTogXCJHb29kIEdyaWVmIExMQ1wiIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb2JqZWN0OiAnY29udGFjdCcsXG4gICAgICAgIG1vZGU6ICd1cHNlcnQnLFxuICAgICAgICByZWNvcmRzOiBbXG4gICAgICAgICAgeyBfaWQ6IFwiMVwiLCBuYW1lOiBcIkFsaWNlIEpvaG5zb25cIiwgZW1haWw6IFwiYWxpY2VAZXhhbXBsZS5jb21cIiwgcGhvbmU6IFwiNTU1LTAxMDFcIiwgdGl0bGU6IFwiVlAgU2FsZXNcIiwgY29tcGFueTogXCJUZWNoQ29ycFwiLCBzdGF0dXM6IFwiQWN0aXZlXCIgfSxcbiAgICAgICAgICB7IF9pZDogXCIyXCIsIG5hbWU6IFwiQm9iIFNtaXRoXCIsIGVtYWlsOiBcImJvYkB0ZWNoLmNvbVwiLCBwaG9uZTogXCI1NTUtMDEwMlwiLCB0aXRsZTogXCJEZXZlbG9wZXJcIiwgY29tcGFueTogXCJTb2Z0d2FyZSBJbmNcIiwgc3RhdHVzOiBcIkxlYWRcIiB9LFxuICAgICAgICAgIHsgX2lkOiBcIjNcIiwgbmFtZTogXCJDaGFybGllIEJyb3duXCIsIGVtYWlsOiBcImNoYXJsaWVAcGVhbnV0cy5jb21cIiwgcGhvbmU6IFwiNTU1LTAxMDNcIiwgdGl0bGU6IFwiTWFuYWdlclwiLCBjb21wYW55OiBcIkdvb2QgR3JpZWYgTExDXCIsIHN0YXR1czogXCJDdXN0b21lclwiIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb2JqZWN0OiAnb3Bwb3J0dW5pdHknLFxuICAgICAgICBtb2RlOiAndXBzZXJ0JyxcbiAgICAgICAgcmVjb3JkczogW1xuICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIF9pZDogXCIxMDFcIiwgXG4gICAgICAgICAgICAgIG5hbWU6IFwiVGVjaENvcnAgRW50ZXJwcmlzZSBMaWNlbnNlXCIsIFxuICAgICAgICAgICAgICBhbW91bnQ6IDUwMDAwLCBcbiAgICAgICAgICAgICAgc3RhZ2U6IFwiUHJvcG9zYWxcIiwgXG4gICAgICAgICAgICAgIGNsb3NlX2RhdGU6IG5ldyBEYXRlKFwiMjAyNC0wNi0zMFwiKSwgXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IFwiMVwiLCBcbiAgICAgICAgICAgICAgY29udGFjdF9pZHM6IFtcIjFcIiwgXCIyXCJdLCBcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRW50ZXJwcmlzZSBzb2Z0d2FyZSBsaWNlbnNlIGZvciA1MDAgdXNlcnMuIEluY2x1ZGVzIHByZW1pdW0gc3VwcG9ydCBhbmQgdHJhaW5pbmcuXCIgXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IFxuICAgICAgICAgICAgICBfaWQ6IFwiMTAyXCIsIFxuICAgICAgICAgICAgICBuYW1lOiBcIlNvZnR3YXJlIEluYyBQaWxvdFwiLCBcbiAgICAgICAgICAgICAgYW1vdW50OiA1MDAwLCBcbiAgICAgICAgICAgICAgc3RhZ2U6IFwiQ2xvc2VkIFdvblwiLCBcbiAgICAgICAgICAgICAgY2xvc2VfZGF0ZTogbmV3IERhdGUoXCIyMDI0LTAxLTE1XCIpLCBcbiAgICAgICAgICAgICAgYWNjb3VudF9pZDogXCIyXCIsXG4gICAgICAgICAgICAgIGNvbnRhY3RfaWRzOiBbXCIyXCJdLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQaWxvdCBwcm9ncmFtIGZvciA1MCB1c2Vycy5cIiBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIF9pZDogXCIxMDNcIiwgXG4gICAgICAgICAgICAgIG5hbWU6IFwiR29vZCBHcmllZiBDb25zdWx0YW50XCIsIFxuICAgICAgICAgICAgICBhbW91bnQ6IDEyMDAwLCBcbiAgICAgICAgICAgICAgc3RhZ2U6IFwiTmVnb3RpYXRpb25cIiwgXG4gICAgICAgICAgICAgIGNsb3NlX2RhdGU6IG5ldyBEYXRlKFwiMjAyNC0wNS0yMFwiKSwgXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IFwiM1wiLFxuICAgICAgICAgICAgICBjb250YWN0X2lkczogW1wiM1wiXSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29uc3VsdGluZyBzZXJ2aWNlcyBmb3IgUTIgaW1wbGVtZW50YXRpb24uXCIgXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9XG59KTtcbiIsICJjb25zdCBfX2luamVjdGVkX2ZpbGVuYW1lX18gPSBcIi9ob21lL3J1bm5lci93b3JrL29iamVjdHVpL29iamVjdHVpL2V4YW1wbGVzL2NybS9zcmMvb2JqZWN0cy9hY2NvdW50Lm9iamVjdC50c1wiO2NvbnN0IF9faW5qZWN0ZWRfZGlybmFtZV9fID0gXCIvaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vc3JjL29iamVjdHNcIjtjb25zdCBfX2luamVjdGVkX2ltcG9ydF9tZXRhX3VybF9fID0gXCJmaWxlOi8vL2hvbWUvcnVubmVyL3dvcmsvb2JqZWN0dWkvb2JqZWN0dWkvZXhhbXBsZXMvY3JtL3NyYy9vYmplY3RzL2FjY291bnQub2JqZWN0LnRzXCI7aW1wb3J0IHsgT2JqZWN0U2NoZW1hLCBGaWVsZCB9IGZyb20gJ0BvYmplY3RzdGFjay9zcGVjL2RhdGEnO1xuXG5leHBvcnQgY29uc3QgQWNjb3VudE9iamVjdCA9IE9iamVjdFNjaGVtYS5jcmVhdGUoe1xuICBuYW1lOiAnYWNjb3VudCcsXG4gIGxhYmVsOiAnQWNjb3VudCcsXG4gIGZpZWxkczoge1xuICAgIG5hbWU6IEZpZWxkLnRleHQoeyBsYWJlbDogJ0FjY291bnQgTmFtZScsIHJlcXVpcmVkOiB0cnVlIH0pLFxuICAgIGluZHVzdHJ5OiBGaWVsZC50ZXh0KHsgbGFiZWw6ICdJbmR1c3RyeScgfSlcbiAgfVxufSk7XG4iLCAiY29uc3QgX19pbmplY3RlZF9maWxlbmFtZV9fID0gXCIvaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vc3JjL29iamVjdHMvY29udGFjdC5vYmplY3QudHNcIjtjb25zdCBfX2luamVjdGVkX2Rpcm5hbWVfXyA9IFwiL2hvbWUvcnVubmVyL3dvcmsvb2JqZWN0dWkvb2JqZWN0dWkvZXhhbXBsZXMvY3JtL3NyYy9vYmplY3RzXCI7Y29uc3QgX19pbmplY3RlZF9pbXBvcnRfbWV0YV91cmxfXyA9IFwiZmlsZTovLy9ob21lL3J1bm5lci93b3JrL29iamVjdHVpL29iamVjdHVpL2V4YW1wbGVzL2NybS9zcmMvb2JqZWN0cy9jb250YWN0Lm9iamVjdC50c1wiO2ltcG9ydCB7IE9iamVjdFNjaGVtYSwgRmllbGQgfSBmcm9tICdAb2JqZWN0c3RhY2svc3BlYy9kYXRhJztcblxuZXhwb3J0IGNvbnN0IENvbnRhY3RPYmplY3QgPSBPYmplY3RTY2hlbWEuY3JlYXRlKHtcbiAgbmFtZTogJ2NvbnRhY3QnLFxuICBsYWJlbDogJ0NvbnRhY3QnLFxuICBmaWVsZHM6IHtcbiAgICBuYW1lOiBGaWVsZC50ZXh0KHsgbGFiZWw6ICdOYW1lJywgcmVxdWlyZWQ6IHRydWUgfSksXG4gICAgZW1haWw6IEZpZWxkLmVtYWlsKHsgbGFiZWw6ICdFbWFpbCcgfSksXG4gICAgcGhvbmU6IEZpZWxkLnRleHQoeyBsYWJlbDogJ1Bob25lJyB9KSxcbiAgICB0aXRsZTogRmllbGQudGV4dCh7IGxhYmVsOiAnVGl0bGUnIH0pLFxuICAgIGNvbXBhbnk6IEZpZWxkLnRleHQoeyBsYWJlbDogJ0NvbXBhbnknIH0pLFxuICAgIHN0YXR1czogRmllbGQuc2VsZWN0KFsnQWN0aXZlJywgJ0xlYWQnLCAnQ3VzdG9tZXInXSwgeyBsYWJlbDogJ1N0YXR1cycgfSksXG4gICAgcHJpb3JpdHk6IEZpZWxkLm51bWJlcih7IGxhYmVsOiAnUHJpb3JpdHknLCBkZWZhdWx0VmFsdWU6IDUgfSksXG4gICAgaXNfYWN0aXZlOiBGaWVsZC5ib29sZWFuKHsgbGFiZWw6ICdBY3RpdmUnLCBkZWZhdWx0VmFsdWU6IHRydWUgfSksXG4gICAgbm90ZXM6IEZpZWxkLnRleHRhcmVhKHsgbGFiZWw6ICdOb3RlcycgfSlcbiAgfVxufSk7XG4iLCAiY29uc3QgX19pbmplY3RlZF9maWxlbmFtZV9fID0gXCIvaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vc3JjL29iamVjdHMvb3Bwb3J0dW5pdHkub2JqZWN0LnRzXCI7Y29uc3QgX19pbmplY3RlZF9kaXJuYW1lX18gPSBcIi9ob21lL3J1bm5lci93b3JrL29iamVjdHVpL29iamVjdHVpL2V4YW1wbGVzL2NybS9zcmMvb2JqZWN0c1wiO2NvbnN0IF9faW5qZWN0ZWRfaW1wb3J0X21ldGFfdXJsX18gPSBcImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vc3JjL29iamVjdHMvb3Bwb3J0dW5pdHkub2JqZWN0LnRzXCI7aW1wb3J0IHsgT2JqZWN0U2NoZW1hLCBGaWVsZCB9IGZyb20gJ0BvYmplY3RzdGFjay9zcGVjL2RhdGEnO1xuXG5leHBvcnQgY29uc3QgT3Bwb3J0dW5pdHlPYmplY3QgPSBPYmplY3RTY2hlbWEuY3JlYXRlKHtcbiAgbmFtZTogJ29wcG9ydHVuaXR5JyxcbiAgbGFiZWw6ICdPcHBvcnR1bml0eScsXG4gIGZpZWxkczoge1xuICAgIG5hbWU6IEZpZWxkLnRleHQoeyBsYWJlbDogJ09wcG9ydHVuaXR5IE5hbWUnLCByZXF1aXJlZDogdHJ1ZSB9KSxcbiAgICBhbW91bnQ6IEZpZWxkLmN1cnJlbmN5KHsgbGFiZWw6ICdBbW91bnQnIH0pLFxuICAgIHN0YWdlOiBGaWVsZC5zZWxlY3QoW1wiUHJvc3BlY3RpbmdcIiwgXCJQcm9wb3NhbFwiLCBcIk5lZ290aWF0aW9uXCIsIFwiQ2xvc2VkIFdvblwiLCBcIkNsb3NlZCBMb3N0XCJdLCB7IGxhYmVsOiAnU3RhZ2UnIH0pLFxuICAgIGNsb3NlX2RhdGU6IEZpZWxkLmRhdGUoeyBsYWJlbDogJ0Nsb3NlIERhdGUnIH0pLFxuICAgIGFjY291bnRfaWQ6IEZpZWxkLmxvb2t1cCgnYWNjb3VudCcsIHsgbGFiZWw6ICdBY2NvdW50JyB9KSxcbiAgICBjb250YWN0X2lkczogRmllbGQubG9va3VwKCdjb250YWN0JywgeyBsYWJlbDogJ0NvbnRhY3RzJywgbXVsdGlwbGU6IHRydWUgfSksXG4gICAgZGVzY3JpcHRpb246IEZpZWxkLnRleHRhcmVhKHsgbGFiZWw6ICdEZXNjcmlwdGlvbicgfSlcbiAgfVxufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQTRTLFNBQVMsbUJBQW1CO0FBQ3hVLFNBQVMsV0FBVzs7O0FDRG9ULFNBQVMsY0FBYyxhQUFhO0FBRXJXLElBQU0sZ0JBQWdCLGFBQWEsT0FBTztBQUFBLEVBQy9DLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxJQUNOLE1BQU0sTUFBTSxLQUFLLEVBQUUsT0FBTyxnQkFBZ0IsVUFBVSxLQUFLLENBQUM7QUFBQSxJQUMxRCxVQUFVLE1BQU0sS0FBSyxFQUFFLE9BQU8sV0FBVyxDQUFDO0FBQUEsRUFDNUM7QUFDRixDQUFDOzs7QUNUdVUsU0FBUyxnQkFBQUEsZUFBYyxTQUFBQyxjQUFhO0FBRXJXLElBQU0sZ0JBQWdCQyxjQUFhLE9BQU87QUFBQSxFQUMvQyxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsSUFDTixNQUFNQyxPQUFNLEtBQUssRUFBRSxPQUFPLFFBQVEsVUFBVSxLQUFLLENBQUM7QUFBQSxJQUNsRCxPQUFPQSxPQUFNLE1BQU0sRUFBRSxPQUFPLFFBQVEsQ0FBQztBQUFBLElBQ3JDLE9BQU9BLE9BQU0sS0FBSyxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQUEsSUFDcEMsT0FBT0EsT0FBTSxLQUFLLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFBQSxJQUNwQyxTQUFTQSxPQUFNLEtBQUssRUFBRSxPQUFPLFVBQVUsQ0FBQztBQUFBLElBQ3hDLFFBQVFBLE9BQU0sT0FBTyxDQUFDLFVBQVUsUUFBUSxVQUFVLEdBQUcsRUFBRSxPQUFPLFNBQVMsQ0FB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QUEsTUFDQTtBQUFBLFFBQ0UsUUFBUTtBQUFBLFFBQ1IsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLFVBQ1A7QUFBQSxZQUNJLEtBQUs7QUFBQSxZQUNMLE1BQU07QUFBQSxZQUNOLFFBQVE7QUFBQSxZQUNSLE9BQU87QUFBQSxZQUNQLFlBQVksb0JBQUksS0FBSyxZQUFZO0FBQUEsWUFDakMsWUFBWTtBQUFBLFlBQ1osYUFBYSxDQUFDLEtBQUssR0FBRztBQUFBLFlBQ3RCLGFBQWE7QUFBQSxVQUNqQjtBQUFBLFVBQ0E7QUFBQSxZQUNJLEtBQUs7QUFBQSxZQUNMLE1BQU07QUFBQSxZQUNOLFFBQVE7QUFBQSxZQUNSLE9BQU87QUFBQSxZQUNQLFlBQVksb0JBQUksS0FBSyxZQUFZO0FBQUEsWUFDakMsWUFBWTtBQUFBLFlBQ1osYUFBYSxDQUFDLEdBQUc7QUFBQSxZQUNqQixhQUFhO0FBQUEsVUFDakI7QUFBQSxVQUNBO0FBQUEsWUFDSSxLQUFLO0FBQUEsWUFDTCxNQUFNO0FBQUEsWUFDTixRQUFRO0FBQUEsWUFDUixPQUFPO0FBQUEsWUFDUCxZQUFZLG9CQUFJLEtBQUssWUFBWTtBQUFBLFlBQ2pDLFlBQVk7QUFBQSxZQUNaLGFBQWEsQ0FBQyxHQUFHO0FBQUEsWUFDakIsYUFBYTtBQUFBLFVBQ2pCO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7IiwKICAibmFtZXMiOiBbIk9iamVjdFNjaGVtYSIsICJGaWVsZCIsICJPYmplY3RTY2hlbWEiLCAiRmllbGQiLCAiT2JqZWN0U2NoZW1hIiwgIkZpZWxkIiwgIk9iamVjdFNjaGVtYSIsICJGaWVsZCJdCn0K diff --git a/packages/core/package.json b/packages/core/package.json index 85c42e32b..fac9fafd1 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -20,6 +20,10 @@ ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" + }, + "./types": { + "types": "./dist/types/index.d.ts", + "import": "./dist/types/index.js" } }, "scripts": { From b49b1555ef1b566096d6cd4c012d9a6bafedae08 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Feb 2026 15:26:33 +0000 Subject: [PATCH 3/3] Remove bundled temp file and update .gitignore Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com> --- .gitignore | 3 + ...objectstack.config.bundled_hh4jovlepqw.mjs | 151 ------------------ 2 files changed, 3 insertions(+), 151 deletions(-) delete mode 100644 examples/crm/objectstack.config.bundled_hh4jovlepqw.mjs diff --git a/.gitignore b/.gitignore index 17856ba73..ca1aeab49 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,9 @@ docs/.vitepress/cache # Object UI CLI temporary files .objectui-tmp +# ObjectStack bundled files +*.bundled_*.mjs + # Fumadocs apps/site/.next apps/site/.map.ts diff --git a/examples/crm/objectstack.config.bundled_hh4jovlepqw.mjs b/examples/crm/objectstack.config.bundled_hh4jovlepqw.mjs deleted file mode 100644 index c7e8c6a7e..000000000 --- a/examples/crm/objectstack.config.bundled_hh4jovlepqw.mjs +++ /dev/null @@ -1,151 +0,0 @@ -// objectstack.config.ts -import { defineStack } from "@objectstack/spec"; -import { App } from "@objectstack/spec/ui"; - -// src/objects/account.object.ts -import { ObjectSchema, Field } from "@objectstack/spec/data"; -var AccountObject = ObjectSchema.create({ - name: "account", - label: "Account", - fields: { - name: Field.text({ label: "Account Name", required: true }), - industry: Field.text({ label: "Industry" }) - } -}); - -// src/objects/contact.object.ts -import { ObjectSchema as ObjectSchema2, Field as Field2 } from "@objectstack/spec/data"; -var ContactObject = ObjectSchema2.create({ - name: "contact", - label: "Contact", - fields: { - name: Field2.text({ label: "Name", required: true }), - email: Field2.email({ label: "Email" }), - phone: Field2.text({ label: "Phone" }), - title: Field2.text({ label: "Title" }), - company: Field2.text({ label: "Company" }), - status: Field2.select(["Active", "Lead", "Customer"], { label: "Status" }), - priority: Field2.number({ label: "Priority", defaultValue: 5 }), - is_active: Field2.boolean({ label: "Active", defaultValue: true }), - notes: Field2.textarea({ label: "Notes" }) - } -}); - -// src/objects/opportunity.object.ts -import { ObjectSchema as ObjectSchema3, Field as Field3 } from "@objectstack/spec/data"; -var OpportunityObject = ObjectSchema3.create({ - name: "opportunity", - label: "Opportunity", - fields: { - name: Field3.text({ label: "Opportunity Name", required: true }), - amount: Field3.currency({ label: "Amount" }), - stage: Field3.select(["Prospecting", "Proposal", "Negotiation", "Closed Won", "Closed Lost"], { label: "Stage" }), - close_date: Field3.date({ label: "Close Date" }), - account_id: Field3.lookup("account", { label: "Account" }), - contact_ids: Field3.lookup("contact", { label: "Contacts", multiple: true }), - description: Field3.textarea({ label: "Description" }) - } -}); - -// objectstack.config.ts -var objectstack_config_default = defineStack({ - objects: [ - AccountObject, - ContactObject, - OpportunityObject - ], - apps: [ - App.create({ - name: "crm_app", - label: "CRM", - icon: "users", - navigation: [ - { - id: "nav_contacts", - type: "object", - objectName: "contact", - label: "Contacts" - }, - { - id: "nav_opportunities", - type: "object", - objectName: "opportunity", - label: "Opportunities" - }, - { - id: "nav_accounts", - type: "object", - objectName: "account", - label: "Accounts" - } - ] - }) - ], - manifest: { - id: "com.example.crm", - version: "1.0.0", - type: "app", - name: "CRM Example", - description: "CRM App Definition", - data: [ - { - object: "account", - mode: "upsert", - records: [ - { _id: "1", name: "TechCorp" }, - { _id: "2", name: "Software Inc" }, - { _id: "3", name: "Good Grief LLC" } - ] - }, - { - object: "contact", - mode: "upsert", - records: [ - { _id: "1", name: "Alice Johnson", email: "alice@example.com", phone: "555-0101", title: "VP Sales", company: "TechCorp", status: "Active" }, - { _id: "2", name: "Bob Smith", email: "bob@tech.com", phone: "555-0102", title: "Developer", company: "Software Inc", status: "Lead" }, - { _id: "3", name: "Charlie Brown", email: "charlie@peanuts.com", phone: "555-0103", title: "Manager", company: "Good Grief LLC", status: "Customer" } - ] - }, - { - object: "opportunity", - mode: "upsert", - records: [ - { - _id: "101", - name: "TechCorp Enterprise License", - amount: 5e4, - stage: "Proposal", - close_date: /* @__PURE__ */ new Date("2024-06-30"), - account_id: "1", - contact_ids: ["1", "2"], - description: "Enterprise software license for 500 users. Includes premium support and training." - }, - { - _id: "102", - name: "Software Inc Pilot", - amount: 5e3, - stage: "Closed Won", - close_date: /* @__PURE__ */ new Date("2024-01-15"), - account_id: "2", - contact_ids: ["2"], - description: "Pilot program for 50 users." - }, - { - _id: "103", - name: "Good Grief Consultant", - amount: 12e3, - stage: "Negotiation", - close_date: /* @__PURE__ */ new Date("2024-05-20"), - account_id: "3", - contact_ids: ["3"], - description: "Consulting services for Q2 implementation." - } - ] - } - ] - } -}); -export { - objectstack_config_default as default -}; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsib2JqZWN0c3RhY2suY29uZmlnLnRzIiwgInNyYy9vYmplY3RzL2FjY291bnQub2JqZWN0LnRzIiwgInNyYy9vYmplY3RzL2NvbnRhY3Qub2JqZWN0LnRzIiwgInNyYy9vYmplY3RzL29wcG9ydHVuaXR5Lm9iamVjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX19pbmplY3RlZF9maWxlbmFtZV9fID0gXCIvaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vb2JqZWN0c3RhY2suY29uZmlnLnRzXCI7Y29uc3QgX19pbmplY3RlZF9kaXJuYW1lX18gPSBcIi9ob21lL3J1bm5lci93b3JrL29iamVjdHVpL29iamVjdHVpL2V4YW1wbGVzL2NybVwiO2NvbnN0IF9faW5qZWN0ZWRfaW1wb3J0X21ldGFfdXJsX18gPSBcImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vb2JqZWN0c3RhY2suY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lU3RhY2sgfSBmcm9tICdAb2JqZWN0c3RhY2svc3BlYyc7XG5pbXBvcnQgeyBBcHAgfSBmcm9tICdAb2JqZWN0c3RhY2svc3BlYy91aSc7XG5pbXBvcnQgeyBBY2NvdW50T2JqZWN0IH0gZnJvbSAnLi9zcmMvb2JqZWN0cy9hY2NvdW50Lm9iamVjdCc7XG5pbXBvcnQgeyBDb250YWN0T2JqZWN0IH0gZnJvbSAnLi9zcmMvb2JqZWN0cy9jb250YWN0Lm9iamVjdCc7XG5pbXBvcnQgeyBPcHBvcnR1bml0eU9iamVjdCB9IGZyb20gJy4vc3JjL29iamVjdHMvb3Bwb3J0dW5pdHkub2JqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lU3RhY2soe1xuICBvYmplY3RzOiBbXG4gICAgQWNjb3VudE9iamVjdCxcbiAgICBDb250YWN0T2JqZWN0LFxuICAgIE9wcG9ydHVuaXR5T2JqZWN0XG4gIF0sXG4gIGFwcHM6IFtcbiAgICBBcHAuY3JlYXRlKHtcbiAgICAgIG5hbWU6ICdjcm1fYXBwJyxcbiAgICAgIGxhYmVsOiAnQ1JNJyxcbiAgICAgIGljb246ICd1c2VycycsXG4gICAgICBuYXZpZ2F0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ25hdl9jb250YWN0cycsXG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgb2JqZWN0TmFtZTogJ2NvbnRhY3QnLFxuICAgICAgICAgIGxhYmVsOiAnQ29udGFjdHMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ25hdl9vcHBvcnR1bml0aWVzJyxcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBvYmplY3ROYW1lOiAnb3Bwb3J0dW5pdHknLFxuICAgICAgICAgIGxhYmVsOiAnT3Bwb3J0dW5pdGllcydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnbmF2X2FjY291bnRzJyxcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBvYmplY3ROYW1lOiAnYWNjb3VudCcsXG4gICAgICAgICAgbGFiZWw6ICdBY2NvdW50cydcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pXG4gIF0sXG4gIG1hbmlmZXN0OiB7XG4gICAgaWQ6ICdjb20uZXhhbXBsZS5jcm0nLFxuICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgdHlwZTogJ2FwcCcsXG4gICAgbmFtZTogJ0NSTSBFeGFtcGxlJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NSTSBBcHAgRGVmaW5pdGlvbicsXG4gICAgZGF0YTogW1xuICAgICAge1xuICAgICAgICBvYmplY3Q6ICdhY2NvdW50JyxcbiAgICAgICAgbW9kZTogJ3Vwc2VydCcsXG4gICAgICAgIHJlY29yZHM6IFtcbiAgICAgICAgICB7IF9pZDogXCIxXCIsIG5hbWU6IFwiVGVjaENvcnBcIiB9LFxuICAgICAgICAgIHsgX2lkOiBcIjJcIiwgbmFtZTogXCJTb2Z0d2FyZSBJbmNcIiB9LFxuICAgICAgICAgIHsgX2lkOiBcIjNcIiwgbmFtZTogXCJHb29kIEdyaWVmIExMQ1wiIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb2JqZWN0OiAnY29udGFjdCcsXG4gICAgICAgIG1vZGU6ICd1cHNlcnQnLFxuICAgICAgICByZWNvcmRzOiBbXG4gICAgICAgICAgeyBfaWQ6IFwiMVwiLCBuYW1lOiBcIkFsaWNlIEpvaG5zb25cIiwgZW1haWw6IFwiYWxpY2VAZXhhbXBsZS5jb21cIiwgcGhvbmU6IFwiNTU1LTAxMDFcIiwgdGl0bGU6IFwiVlAgU2FsZXNcIiwgY29tcGFueTogXCJUZWNoQ29ycFwiLCBzdGF0dXM6IFwiQWN0aXZlXCIgfSxcbiAgICAgICAgICB7IF9pZDogXCIyXCIsIG5hbWU6IFwiQm9iIFNtaXRoXCIsIGVtYWlsOiBcImJvYkB0ZWNoLmNvbVwiLCBwaG9uZTogXCI1NTUtMDEwMlwiLCB0aXRsZTogXCJEZXZlbG9wZXJcIiwgY29tcGFueTogXCJTb2Z0d2FyZSBJbmNcIiwgc3RhdHVzOiBcIkxlYWRcIiB9LFxuICAgICAgICAgIHsgX2lkOiBcIjNcIiwgbmFtZTogXCJDaGFybGllIEJyb3duXCIsIGVtYWlsOiBcImNoYXJsaWVAcGVhbnV0cy5jb21cIiwgcGhvbmU6IFwiNTU1LTAxMDNcIiwgdGl0bGU6IFwiTWFuYWdlclwiLCBjb21wYW55OiBcIkdvb2QgR3JpZWYgTExDXCIsIHN0YXR1czogXCJDdXN0b21lclwiIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb2JqZWN0OiAnb3Bwb3J0dW5pdHknLFxuICAgICAgICBtb2RlOiAndXBzZXJ0JyxcbiAgICAgICAgcmVjb3JkczogW1xuICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIF9pZDogXCIxMDFcIiwgXG4gICAgICAgICAgICAgIG5hbWU6IFwiVGVjaENvcnAgRW50ZXJwcmlzZSBMaWNlbnNlXCIsIFxuICAgICAgICAgICAgICBhbW91bnQ6IDUwMDAwLCBcbiAgICAgICAgICAgICAgc3RhZ2U6IFwiUHJvcG9zYWxcIiwgXG4gICAgICAgICAgICAgIGNsb3NlX2RhdGU6IG5ldyBEYXRlKFwiMjAyNC0wNi0zMFwiKSwgXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IFwiMVwiLCBcbiAgICAgICAgICAgICAgY29udGFjdF9pZHM6IFtcIjFcIiwgXCIyXCJdLCBcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRW50ZXJwcmlzZSBzb2Z0d2FyZSBsaWNlbnNlIGZvciA1MDAgdXNlcnMuIEluY2x1ZGVzIHByZW1pdW0gc3VwcG9ydCBhbmQgdHJhaW5pbmcuXCIgXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IFxuICAgICAgICAgICAgICBfaWQ6IFwiMTAyXCIsIFxuICAgICAgICAgICAgICBuYW1lOiBcIlNvZnR3YXJlIEluYyBQaWxvdFwiLCBcbiAgICAgICAgICAgICAgYW1vdW50OiA1MDAwLCBcbiAgICAgICAgICAgICAgc3RhZ2U6IFwiQ2xvc2VkIFdvblwiLCBcbiAgICAgICAgICAgICAgY2xvc2VfZGF0ZTogbmV3IERhdGUoXCIyMDI0LTAxLTE1XCIpLCBcbiAgICAgICAgICAgICAgYWNjb3VudF9pZDogXCIyXCIsXG4gICAgICAgICAgICAgIGNvbnRhY3RfaWRzOiBbXCIyXCJdLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQaWxvdCBwcm9ncmFtIGZvciA1MCB1c2Vycy5cIiBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIF9pZDogXCIxMDNcIiwgXG4gICAgICAgICAgICAgIG5hbWU6IFwiR29vZCBHcmllZiBDb25zdWx0YW50XCIsIFxuICAgICAgICAgICAgICBhbW91bnQ6IDEyMDAwLCBcbiAgICAgICAgICAgICAgc3RhZ2U6IFwiTmVnb3RpYXRpb25cIiwgXG4gICAgICAgICAgICAgIGNsb3NlX2RhdGU6IG5ldyBEYXRlKFwiMjAyNC0wNS0yMFwiKSwgXG4gICAgICAgICAgICAgIGFjY291bnRfaWQ6IFwiM1wiLFxuICAgICAgICAgICAgICBjb250YWN0X2lkczogW1wiM1wiXSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29uc3VsdGluZyBzZXJ2aWNlcyBmb3IgUTIgaW1wbGVtZW50YXRpb24uXCIgXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9XG59KTtcbiIsICJjb25zdCBfX2luamVjdGVkX2ZpbGVuYW1lX18gPSBcIi9ob21lL3J1bm5lci93b3JrL29iamVjdHVpL29iamVjdHVpL2V4YW1wbGVzL2NybS9zcmMvb2JqZWN0cy9hY2NvdW50Lm9iamVjdC50c1wiO2NvbnN0IF9faW5qZWN0ZWRfZGlybmFtZV9fID0gXCIvaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vc3JjL29iamVjdHNcIjtjb25zdCBfX2luamVjdGVkX2ltcG9ydF9tZXRhX3VybF9fID0gXCJmaWxlOi8vL2hvbWUvcnVubmVyL3dvcmsvb2JqZWN0dWkvb2JqZWN0dWkvZXhhbXBsZXMvY3JtL3NyYy9vYmplY3RzL2FjY291bnQub2JqZWN0LnRzXCI7aW1wb3J0IHsgT2JqZWN0U2NoZW1hLCBGaWVsZCB9IGZyb20gJ0BvYmplY3RzdGFjay9zcGVjL2RhdGEnO1xuXG5leHBvcnQgY29uc3QgQWNjb3VudE9iamVjdCA9IE9iamVjdFNjaGVtYS5jcmVhdGUoe1xuICBuYW1lOiAnYWNjb3VudCcsXG4gIGxhYmVsOiAnQWNjb3VudCcsXG4gIGZpZWxkczoge1xuICAgIG5hbWU6IEZpZWxkLnRleHQoeyBsYWJlbDogJ0FjY291bnQgTmFtZScsIHJlcXVpcmVkOiB0cnVlIH0pLFxuICAgIGluZHVzdHJ5OiBGaWVsZC50ZXh0KHsgbGFiZWw6ICdJbmR1c3RyeScgfSlcbiAgfVxufSk7XG4iLCAiY29uc3QgX19pbmplY3RlZF9maWxlbmFtZV9fID0gXCIvaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vc3JjL29iamVjdHMvY29udGFjdC5vYmplY3QudHNcIjtjb25zdCBfX2luamVjdGVkX2Rpcm5hbWVfXyA9IFwiL2hvbWUvcnVubmVyL3dvcmsvb2JqZWN0dWkvb2JqZWN0dWkvZXhhbXBsZXMvY3JtL3NyYy9vYmplY3RzXCI7Y29uc3QgX19pbmplY3RlZF9pbXBvcnRfbWV0YV91cmxfXyA9IFwiZmlsZTovLy9ob21lL3J1bm5lci93b3JrL29iamVjdHVpL29iamVjdHVpL2V4YW1wbGVzL2NybS9zcmMvb2JqZWN0cy9jb250YWN0Lm9iamVjdC50c1wiO2ltcG9ydCB7IE9iamVjdFNjaGVtYSwgRmllbGQgfSBmcm9tICdAb2JqZWN0c3RhY2svc3BlYy9kYXRhJztcblxuZXhwb3J0IGNvbnN0IENvbnRhY3RPYmplY3QgPSBPYmplY3RTY2hlbWEuY3JlYXRlKHtcbiAgbmFtZTogJ2NvbnRhY3QnLFxuICBsYWJlbDogJ0NvbnRhY3QnLFxuICBmaWVsZHM6IHtcbiAgICBuYW1lOiBGaWVsZC50ZXh0KHsgbGFiZWw6ICdOYW1lJywgcmVxdWlyZWQ6IHRydWUgfSksXG4gICAgZW1haWw6IEZpZWxkLmVtYWlsKHsgbGFiZWw6ICdFbWFpbCcgfSksXG4gICAgcGhvbmU6IEZpZWxkLnRleHQoeyBsYWJlbDogJ1Bob25lJyB9KSxcbiAgICB0aXRsZTogRmllbGQudGV4dCh7IGxhYmVsOiAnVGl0bGUnIH0pLFxuICAgIGNvbXBhbnk6IEZpZWxkLnRleHQoeyBsYWJlbDogJ0NvbXBhbnknIH0pLFxuICAgIHN0YXR1czogRmllbGQuc2VsZWN0KFsnQWN0aXZlJywgJ0xlYWQnLCAnQ3VzdG9tZXInXSwgeyBsYWJlbDogJ1N0YXR1cycgfSksXG4gICAgcHJpb3JpdHk6IEZpZWxkLm51bWJlcih7IGxhYmVsOiAnUHJpb3JpdHknLCBkZWZhdWx0VmFsdWU6IDUgfSksXG4gICAgaXNfYWN0aXZlOiBGaWVsZC5ib29sZWFuKHsgbGFiZWw6ICdBY3RpdmUnLCBkZWZhdWx0VmFsdWU6IHRydWUgfSksXG4gICAgbm90ZXM6IEZpZWxkLnRleHRhcmVhKHsgbGFiZWw6ICdOb3RlcycgfSlcbiAgfVxufSk7XG4iLCAiY29uc3QgX19pbmplY3RlZF9maWxlbmFtZV9fID0gXCIvaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vc3JjL29iamVjdHMvb3Bwb3J0dW5pdHkub2JqZWN0LnRzXCI7Y29uc3QgX19pbmplY3RlZF9kaXJuYW1lX18gPSBcIi9ob21lL3J1bm5lci93b3JrL29iamVjdHVpL29iamVjdHVpL2V4YW1wbGVzL2NybS9zcmMvb2JqZWN0c1wiO2NvbnN0IF9faW5qZWN0ZWRfaW1wb3J0X21ldGFfdXJsX18gPSBcImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vYmplY3R1aS9vYmplY3R1aS9leGFtcGxlcy9jcm0vc3JjL29iamVjdHMvb3Bwb3J0dW5pdHkub2JqZWN0LnRzXCI7aW1wb3J0IHsgT2JqZWN0U2NoZW1hLCBGaWVsZCB9IGZyb20gJ0BvYmplY3RzdGFjay9zcGVjL2RhdGEnO1xuXG5leHBvcnQgY29uc3QgT3Bwb3J0dW5pdHlPYmplY3QgPSBPYmplY3RTY2hlbWEuY3JlYXRlKHtcbiAgbmFtZTogJ29wcG9ydHVuaXR5JyxcbiAgbGFiZWw6ICdPcHBvcnR1bml0eScsXG4gIGZpZWxkczoge1xuICAgIG5hbWU6IEZpZWxkLnRleHQoeyBsYWJlbDogJ09wcG9ydHVuaXR5IE5hbWUnLCByZXF1aXJlZDogdHJ1ZSB9KSxcbiAgICBhbW91bnQ6IEZpZWxkLmN1cnJlbmN5KHsgbGFiZWw6ICdBbW91bnQnIH0pLFxuICAgIHN0YWdlOiBGaWVsZC5zZWxlY3QoW1wiUHJvc3BlY3RpbmdcIiwgXCJQcm9wb3NhbFwiLCBcIk5lZ290aWF0aW9uXCIsIFwiQ2xvc2VkIFdvblwiLCBcIkNsb3NlZCBMb3N0XCJdLCB7IGxhYmVsOiAnU3RhZ2UnIH0pLFxuICAgIGNsb3NlX2RhdGU6IEZpZWxkLmRhdGUoeyBsYWJlbDogJ0Nsb3NlIERhdGUnIH0pLFxuICAgIGFjY291bnRfaWQ6IEZpZWxkLmxvb2t1cCgnYWNjb3VudCcsIHsgbGFiZWw6ICdBY2NvdW50JyB9KSxcbiAgICBjb250YWN0X2lkczogRmllbGQubG9va3VwKCdjb250YWN0JywgeyBsYWJlbDogJ0NvbnRhY3RzJywgbXVsdGlwbGU6IHRydWUgfSksXG4gICAgZGVzY3JpcHRpb246IEZpZWxkLnRleHRhcmVhKHsgbGFiZWw6ICdEZXNjcmlwdGlvbicgfSlcbiAgfVxufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQTRTLFNBQVMsbUJBQW1CO0FBQ3hVLFNBQVMsV0FBVzs7O0FDRG9ULFNBQVMsY0FBYyxhQUFhO0FBRXJXLElBQU0sZ0JBQWdCLGFBQWEsT0FBTztBQUFBLEVBQy9DLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxJQUNOLE1BQU0sTUFBTSxLQUFLLEVBQUUsT0FBTyxnQkFBZ0IsVUFBVSxLQUFLLENBQUM7QUFBQSxJQUMxRCxVQUFVLE1BQU0sS0FBSyxFQUFFLE9BQU8sV0FBVyxDQUFDO0FBQUEsRUFDNUM7QUFDRixDQUFDOzs7QUNUdVUsU0FBUyxnQkFBQUEsZUFBYyxTQUFBQyxjQUFhO0FBRXJXLElBQU0sZ0JBQWdCQyxjQUFhLE9BQU87QUFBQSxFQUMvQyxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsSUFDTixNQUFNQyxPQUFNLEtBQUssRUFBRSxPQUFPLFFBQVEsVUFBVSxLQUFLLENBQUM7QUFBQSxJQUNsRCxPQUFPQSxPQUFNLE1BQU0sRUFBRSxPQUFPLFFBQVEsQ0FBQztBQUFBLElBQ3JDLE9BQU9BLE9BQU0sS0FBSyxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQUEsSUFDcEMsT0FBT0EsT0FBTSxLQUFLLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFBQSxJQUNwQyxTQUFTQSxPQUFNLEtBQUssRUFBRSxPQUFPLFVBQVUsQ0FBQztBQUFBLElBQ3hDLFFBQVFBLE9BQU0sT0FBTyxDQUFDLFVBQVUsUUFBUSxVQUFVLEdBQUcsRUFBRSxPQUFPLFNBQVMsQ0FB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QUEsTUFDQTtBQUFBLFFBQ0UsUUFBUTtBQUFBLFFBQ1IsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLFVBQ1A7QUFBQSxZQUNJLEtBQUs7QUFBQSxZQUNMLE1BQU07QUFBQSxZQUNOLFFBQVE7QUFBQSxZQUNSLE9BQU87QUFBQSxZQUNQLFlBQVksb0JBQUksS0FBSyxZQUFZO0FBQUEsWUFDakMsWUFBWTtBQUFBLFlBQ1osYUFBYSxDQUFDLEtBQUssR0FBRztBQUFBLFlBQ3RCLGFBQWE7QUFBQSxVQUNqQjtBQUFBLFVBQ0E7QUFBQSxZQUNJLEtBQUs7QUFBQSxZQUNMLE1BQU07QUFBQSxZQUNOLFFBQVE7QUFBQSxZQUNSLE9BQU87QUFBQSxZQUNQLFlBQVksb0JBQUksS0FBSyxZQUFZO0FBQUEsWUFDakMsWUFBWTtBQUFBLFlBQ1osYUFBYSxDQUFDLEdBQUc7QUFBQSxZQUNqQixhQUFhO0FBQUEsVUFDakI7QUFBQSxVQUNBO0FBQUEsWUFDSSxLQUFLO0FBQUEsWUFDTCxNQUFNO0FBQUEsWUFDTixRQUFRO0FBQUEsWUFDUixPQUFPO0FBQUEsWUFDUCxZQUFZLG9CQUFJLEtBQUssWUFBWTtBQUFBLFlBQ2pDLFlBQVk7QUFBQSxZQUNaLGFBQWEsQ0FBQyxHQUFHO0FBQUEsWUFDakIsYUFBYTtBQUFBLFVBQ2pCO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7IiwKICAibmFtZXMiOiBbIk9iamVjdFNjaGVtYSIsICJGaWVsZCIsICJPYmplY3RTY2hlbWEiLCAiRmllbGQiLCAiT2JqZWN0U2NoZW1hIiwgIkZpZWxkIiwgIk9iamVjdFNjaGVtYSIsICJGaWVsZCJdCn0K