@baseplate-dev/project-builder-web 0.2.1 → 0.2.3
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/dist/assets/-constants-gwObfy2j.js +4 -0
- package/dist/assets/-constants-gwObfy2j.js.map +1 -0
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/web-BXxolMLm.js +2 -0
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/web-BXxolMLm.js.map +1 -0
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-CDWHycLw.js +5 -0
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-CDWHycLw.js.map +1 -0
- package/dist/assets/__federation_shared_@baseplate-dev/ui-components-DGE1buQ-.js +46 -0
- package/dist/assets/__federation_shared_@baseplate-dev/ui-components-DGE1buQ-.js.map +1 -0
- package/dist/assets/{_virtual___federation_fn_import-BawTfoQI.js → _virtual___federation_fn_import-CE3p-l_2.js} +2 -2
- package/dist/assets/{_virtual___federation_fn_import-BawTfoQI.js.map → _virtual___federation_fn_import-CE3p-l_2.js.map} +1 -1
- package/dist/assets/backend-BAEsy0fr.js +2 -0
- package/dist/assets/backend-BAEsy0fr.js.map +1 -0
- package/dist/assets/badge-with-type-label-BuG6yCtf.js +2 -0
- package/dist/assets/badge-with-type-label-BuG6yCtf.js.map +1 -0
- package/dist/assets/edit._id-DPcGRUbG.js +2 -0
- package/dist/assets/edit._id-DPcGRUbG.js.map +1 -0
- package/dist/assets/enum-info-form-BjI1ArPU.js +2 -0
- package/dist/assets/enum-info-form-BjI1ArPU.js.map +1 -0
- package/dist/assets/graphql-DksHNLLL.js +2 -0
- package/dist/assets/graphql-DksHNLLL.js.map +1 -0
- package/dist/assets/hierarchy-BwshirJR.js +2 -0
- package/dist/assets/hierarchy-BwshirJR.js.map +1 -0
- package/dist/assets/immer-xieDw-3D.js +2 -0
- package/dist/assets/immer-xieDw-3D.js.map +1 -0
- package/dist/assets/index-B6qfP-Zp.js +2 -0
- package/dist/assets/index-B6qfP-Zp.js.map +1 -0
- package/dist/assets/index-B9Di1LKs.css +1 -0
- package/dist/assets/index-BNK4j9mt.js +2 -0
- package/dist/assets/index-BNK4j9mt.js.map +1 -0
- package/dist/assets/index-BS45dlQs.js +2 -0
- package/dist/assets/index-BS45dlQs.js.map +1 -0
- package/dist/assets/index-C6ezfkGk.js +2 -0
- package/dist/assets/index-C6ezfkGk.js.map +1 -0
- package/dist/assets/index-CVRvV2mv.js +2 -0
- package/dist/assets/index-CVRvV2mv.js.map +1 -0
- package/dist/assets/index-CwavzuOe.js +2 -0
- package/dist/assets/index-CwavzuOe.js.map +1 -0
- package/dist/assets/index-D5UX5AHP.js +5 -0
- package/dist/assets/index-D5UX5AHP.js.map +1 -0
- package/dist/assets/index-Dp90A2TJ.js +2 -0
- package/dist/assets/index-Dp90A2TJ.js.map +1 -0
- package/dist/assets/index-E5Zy1ClF.js +2 -0
- package/dist/assets/index-E5Zy1ClF.js.map +1 -0
- package/dist/assets/index-La9rk06J.js +2 -0
- package/dist/assets/index-La9rk06J.js.map +1 -0
- package/dist/assets/index-gE__lQ6b.js +58 -0
- package/dist/assets/index-gE__lQ6b.js.map +1 -0
- package/dist/assets/index-s17MV-9f.js +2 -0
- package/dist/assets/index-s17MV-9f.js.map +1 -0
- package/dist/assets/index.esm-CyH9wtdI.js +10 -0
- package/dist/assets/index.esm-CyH9wtdI.js.map +1 -0
- package/dist/assets/inflection-C1nKqrJS.js +9 -0
- package/dist/assets/inflection-C1nKqrJS.js.map +1 -0
- package/dist/assets/model-info-form-B9t3m8Pj.js +2 -0
- package/dist/assets/model-info-form-B9t3m8Pj.js.map +1 -0
- package/dist/assets/model-merger-DL4MVNID.js +2 -0
- package/dist/assets/model-merger-DL4MVNID.js.map +1 -0
- package/dist/assets/new-app-dialog-Cd7rJ7i5.js +2 -0
- package/dist/assets/new-app-dialog-Cd7rJ7i5.js.map +1 -0
- package/dist/assets/new-enum-dialog-Z3aWnnBr.js +2 -0
- package/dist/assets/new-enum-dialog-Z3aWnnBr.js.map +1 -0
- package/dist/assets/new-model-dialog-uEX7hTid.js +2 -0
- package/dist/assets/new-model-dialog-uEX7hTid.js.map +1 -0
- package/dist/assets/route-B2oYTZT4.js +2 -0
- package/dist/assets/route-B2oYTZT4.js.map +1 -0
- package/dist/assets/route-B6DRGm3t.js +2 -0
- package/dist/assets/route-B6DRGm3t.js.map +1 -0
- package/dist/assets/route-BOOZxY6E.js +2 -0
- package/dist/assets/route-BOOZxY6E.js.map +1 -0
- package/dist/assets/route-BwqWBMDI.js +2 -0
- package/dist/assets/route-BwqWBMDI.js.map +1 -0
- package/dist/assets/route-BxjC9xAo.js +2 -0
- package/dist/assets/route-BxjC9xAo.js.map +1 -0
- package/dist/assets/route-BzTxfPrV.js +2 -0
- package/dist/assets/route-BzTxfPrV.js.map +1 -0
- package/dist/assets/route-C8YLDv4I.js +2 -0
- package/dist/assets/route-C8YLDv4I.js.map +1 -0
- package/dist/assets/route-DrufP1-c.js +2 -0
- package/dist/assets/route-DrufP1-c.js.map +1 -0
- package/dist/assets/route-_AecKyFO.js +2 -0
- package/dist/assets/route-_AecKyFO.js.map +1 -0
- package/dist/assets/sections-D-GS6uoS.js +2 -0
- package/dist/assets/sections-D-GS6uoS.js.map +1 -0
- package/dist/assets/sections._sectionKey-Bj4VmUuM.js +2 -0
- package/dist/assets/sections._sectionKey-Bj4VmUuM.js.map +1 -0
- package/dist/assets/service-C6FdRXxU.js +2 -0
- package/dist/assets/service-C6FdRXxU.js.map +1 -0
- package/dist/assets/template-extractor-D2LqkpO5.js +2 -0
- package/dist/assets/template-extractor-D2LqkpO5.js.map +1 -0
- package/dist/assets/theme-builder-_PghOvuC.js +11 -0
- package/dist/assets/theme-builder-_PghOvuC.js.map +1 -0
- package/dist/assets/use-definition-schema-B2FBXmC_.js +2 -0
- package/dist/assets/use-definition-schema-B2FBXmC_.js.map +1 -0
- package/dist/assets/use-enum-form-DQza9C6Q.js +2 -0
- package/dist/assets/use-enum-form-DQza9C6Q.js.map +1 -0
- package/dist/assets/use-model-form-D4qoaVd7.js +2 -0
- package/dist/assets/use-model-form-D4qoaVd7.js.map +1 -0
- package/dist/assets/utils-CH9UxfXa.js +2 -0
- package/dist/assets/utils-CH9UxfXa.js.map +1 -0
- package/dist/assets/web-C6Idxok-.js +2 -0
- package/dist/assets/web-C6Idxok-.js.map +1 -0
- package/dist/index.html +6 -8
- package/package.json +9 -8
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/web-DNtY4wq3.js +0 -2
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/web-DNtY4wq3.js.map +0 -1
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-zvGcQ6PN.js +0 -5
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-zvGcQ6PN.js.map +0 -1
- package/dist/assets/__federation_shared_@baseplate-dev/ui-components-DQh2UKHB.js +0 -46
- package/dist/assets/__federation_shared_@baseplate-dev/ui-components-DQh2UKHB.js.map +0 -1
- package/dist/assets/index-BDJ79UQH.css +0 -1
- package/dist/assets/index-C6NlRicZ.js +0 -78
- package/dist/assets/index-C6NlRicZ.js.map +0 -1
- package/dist/assets/index-DC_DCd-Q.js +0 -12
- package/dist/assets/index-DC_DCd-Q.js.map +0 -1
- package/dist/assets/index.esm-H0JGW0RR.js +0 -10
- package/dist/assets/index.esm-H0JGW0RR.js.map +0 -1
- package/dist/assets/model-merger-D2RoujrB.js +0 -2
- package/dist/assets/model-merger-D2RoujrB.js.map +0 -1
- package/dist/assets/not-empty-CznDVwM8.js +0 -2
- package/dist/assets/not-empty-CznDVwM8.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inflection-C1nKqrJS.js","sources":["../../../../node_modules/.pnpm/inflection@3.0.0/node_modules/inflection/lib/inflection.js"],"sourcesContent":["\"use strict\";\n/*!\n * inflection\n * Copyright(c) 2011 Ben Lin <ben@dreamerslab.com>\n * MIT Licensed\n *\n * @fileoverview\n * A port of inflection-js to node.js module.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transform = exports.ordinalize = exports.foreignKey = exports.classify = exports.tableize = exports.demodulize = exports.titleize = exports.dasherize = exports.capitalize = exports.humanize = exports.underscore = exports.camelize = exports.inflect = exports.singularize = exports.pluralize = void 0;\n/**\n * @description This is a list of nouns that use the same form for both singular and plural.\n * This list should remain entirely in lower case to correctly match Strings.\n */\nconst uncountableWords = [\n // 'access',\n 'accommodation',\n 'adulthood',\n 'advertising',\n 'advice',\n 'aggression',\n 'aid',\n 'air',\n 'aircraft',\n 'alcohol',\n 'anger',\n 'applause',\n 'arithmetic',\n // 'art',\n 'assistance',\n 'athletics',\n // 'attention',\n 'bacon',\n 'baggage',\n // 'ballet',\n // 'beauty',\n 'beef',\n // 'beer',\n // 'behavior',\n 'biology',\n // 'billiards',\n 'blood',\n 'botany',\n // 'bowels',\n 'bread',\n // 'business',\n 'butter',\n 'carbon',\n 'cardboard',\n 'cash',\n 'chalk',\n 'chaos',\n 'chess',\n 'crossroads',\n 'countryside',\n // 'damage',\n 'dancing',\n // 'danger',\n 'deer',\n // 'delight',\n // 'dessert',\n 'dignity',\n 'dirt',\n // 'distribution',\n 'dust',\n 'economics',\n 'education',\n 'electricity',\n // 'employment',\n // 'energy',\n 'engineering',\n 'enjoyment',\n // 'entertainment',\n 'envy',\n 'equipment',\n 'ethics',\n 'evidence',\n 'evolution',\n // 'failure',\n // 'faith',\n 'fame',\n 'fiction',\n // 'fish',\n 'flour',\n 'flu',\n 'food',\n // 'freedom',\n // 'fruit',\n 'fuel',\n 'fun',\n // 'funeral',\n 'furniture',\n 'gallows',\n 'garbage',\n 'garlic',\n // 'gas',\n 'genetics',\n // 'glass',\n 'gold',\n 'golf',\n 'gossip',\n // 'grass',\n 'gratitude',\n 'grief',\n // 'ground',\n 'guilt',\n 'gymnastics',\n // 'hair',\n 'happiness',\n 'hardware',\n 'harm',\n 'hate',\n 'hatred',\n 'health',\n 'heat',\n // 'height',\n 'help',\n 'homework',\n 'honesty',\n 'honey',\n 'hospitality',\n 'housework',\n 'humour',\n 'hunger',\n 'hydrogen',\n 'ice',\n 'importance',\n 'inflation',\n 'information',\n // 'injustice',\n 'innocence',\n // 'intelligence',\n 'iron',\n 'irony',\n 'jam',\n // 'jealousy',\n // 'jelly',\n 'jewelry',\n // 'joy',\n 'judo',\n // 'juice',\n // 'justice',\n 'karate',\n // 'kindness',\n 'knowledge',\n // 'labour',\n 'lack',\n // 'land',\n 'laughter',\n 'lava',\n 'leather',\n 'leisure',\n 'lightning',\n 'linguine',\n 'linguini',\n 'linguistics',\n 'literature',\n 'litter',\n 'livestock',\n 'logic',\n 'loneliness',\n // 'love',\n 'luck',\n 'luggage',\n 'macaroni',\n 'machinery',\n 'magic',\n // 'mail',\n 'management',\n 'mankind',\n 'marble',\n 'mathematics',\n 'mayonnaise',\n 'measles',\n // 'meat',\n // 'metal',\n 'methane',\n 'milk',\n 'minus',\n 'money',\n // 'moose',\n 'mud',\n 'music',\n 'mumps',\n 'nature',\n 'news',\n 'nitrogen',\n 'nonsense',\n 'nurture',\n 'nutrition',\n 'obedience',\n 'obesity',\n // 'oil',\n 'oxygen',\n // 'paper',\n // 'passion',\n 'pasta',\n 'patience',\n // 'permission',\n 'physics',\n 'poetry',\n 'pollution',\n 'poverty',\n // 'power',\n 'pride',\n // 'production',\n // 'progress',\n // 'pronunciation',\n 'psychology',\n 'publicity',\n 'punctuation',\n // 'quality',\n // 'quantity',\n 'quartz',\n 'racism',\n // 'rain',\n // 'recreation',\n 'relaxation',\n 'reliability',\n 'research',\n 'respect',\n 'revenge',\n 'rice',\n 'rubbish',\n 'rum',\n 'safety',\n // 'salad',\n // 'salt',\n // 'sand',\n // 'satire',\n 'scenery',\n 'seafood',\n 'seaside',\n 'series',\n 'shame',\n 'sheep',\n 'shopping',\n // 'silence',\n 'sleep',\n // 'slang'\n 'smoke',\n 'smoking',\n 'snow',\n 'soap',\n 'software',\n 'soil',\n // 'sorrow',\n // 'soup',\n 'spaghetti',\n // 'speed',\n 'species',\n // 'spelling',\n // 'sport',\n 'steam',\n // 'strength',\n 'stuff',\n 'stupidity',\n // 'success',\n // 'sugar',\n 'sunshine',\n 'symmetry',\n // 'tea',\n 'tennis',\n 'thirst',\n 'thunder',\n 'timber',\n // 'time',\n // 'toast',\n // 'tolerance',\n // 'trade',\n 'traffic',\n 'transportation',\n // 'travel',\n 'trust',\n // 'understanding',\n 'underwear',\n 'unemployment',\n 'unity',\n // 'usage',\n 'validity',\n 'veal',\n 'vegetation',\n 'vegetarianism',\n 'vengeance',\n 'violence',\n // 'vision',\n 'vitality',\n 'warmth',\n // 'water',\n 'wealth',\n 'weather',\n // 'weight',\n 'welfare',\n 'wheat',\n // 'whiskey',\n // 'width',\n 'wildlife',\n // 'wine',\n 'wisdom',\n // 'wood',\n // 'wool',\n // 'work',\n // 'yeast',\n 'yoga',\n 'zinc',\n 'zoology',\n];\n/**\n * @description These rules translate from the singular form of a noun to its plural form.\n */\nconst regex = {\n plural: {\n men: new RegExp('^(m|wom)en$', 'gi'),\n people: new RegExp('(pe)ople$', 'gi'),\n children: new RegExp('(child)ren$', 'gi'),\n tia: new RegExp('([ti])a$', 'gi'),\n analyses: new RegExp('((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$', 'gi'),\n databases: new RegExp('(database)s$', 'gi'),\n drives: new RegExp('(drive)s$', 'gi'),\n hives: new RegExp('(hi|ti)ves$', 'gi'),\n curves: new RegExp('(curve)s$', 'gi'),\n lrves: new RegExp('([lr])ves$', 'gi'),\n aves: new RegExp('([a])ves$', 'gi'),\n foves: new RegExp('([^fo])ves$', 'gi'),\n movies: new RegExp('(m)ovies$', 'gi'),\n aeiouyies: new RegExp('([^aeiouy]|qu)ies$', 'gi'),\n series: new RegExp('(s)eries$', 'gi'),\n xes: new RegExp('(x|ch|ss|sh)es$', 'gi'),\n mice: new RegExp('([m|l])ice$', 'gi'),\n buses: new RegExp('(bus)es$', 'gi'),\n oes: new RegExp('(o)es$', 'gi'),\n shoes: new RegExp('(shoe)s$', 'gi'),\n crises: new RegExp('(cris|ax|test)es$', 'gi'),\n octopuses: new RegExp('(octop|vir)uses$', 'gi'),\n aliases: new RegExp('(alias|canvas|status|campus)es$', 'gi'),\n summonses: new RegExp('^(summons|bonus)es$', 'gi'),\n oxen: new RegExp('^(ox)en', 'gi'),\n matrices: new RegExp('(matr)ices$', 'gi'),\n vertices: new RegExp('(vert|ind)ices$', 'gi'),\n feet: new RegExp('^feet$', 'gi'),\n teeth: new RegExp('^teeth$', 'gi'),\n geese: new RegExp('^geese$', 'gi'),\n quizzes: new RegExp('(quiz)zes$', 'gi'),\n whereases: new RegExp('^(whereas)es$', 'gi'),\n criteria: new RegExp('^(criteri)a$', 'gi'),\n genera: new RegExp('^genera$', 'gi'),\n ss: new RegExp('ss$', 'gi'),\n s: new RegExp('s$', 'gi'),\n },\n singular: {\n man: new RegExp('^(m|wom)an$', 'gi'),\n person: new RegExp('(pe)rson$', 'gi'),\n child: new RegExp('(child)$', 'gi'),\n drive: new RegExp('(drive)$', 'gi'),\n ox: new RegExp('^(ox)$', 'gi'),\n axis: new RegExp('(ax|test)is$', 'gi'),\n octopus: new RegExp('(octop|vir)us$', 'gi'),\n alias: new RegExp('(alias|status|canvas|campus)$', 'gi'),\n summons: new RegExp('^(summons|bonus)$', 'gi'),\n bus: new RegExp('(bu)s$', 'gi'),\n buffalo: new RegExp('(buffal|tomat|potat)o$', 'gi'),\n tium: new RegExp('([ti])um$', 'gi'),\n sis: new RegExp('sis$', 'gi'),\n ffe: new RegExp('(?:([^f])fe|([lr])f)$', 'gi'),\n hive: new RegExp('(hi|ti)ve$', 'gi'),\n aeiouyy: new RegExp('([^aeiouy]|qu)y$', 'gi'),\n x: new RegExp('(x|ch|ss|sh)$', 'gi'),\n matrix: new RegExp('(matr)ix$', 'gi'),\n vertex: new RegExp('(vert|ind)ex$', 'gi'),\n mouse: new RegExp('([m|l])ouse$', 'gi'),\n foot: new RegExp('^foot$', 'gi'),\n tooth: new RegExp('^tooth$', 'gi'),\n goose: new RegExp('^goose$', 'gi'),\n quiz: new RegExp('(quiz)$', 'gi'),\n whereas: new RegExp('^(whereas)$', 'gi'),\n criterion: new RegExp('^(criteri)on$', 'gi'),\n genus: new RegExp('^genus$', 'gi'),\n s: new RegExp('s$', 'gi'),\n common: new RegExp('$', 'gi'),\n },\n};\nconst pluralRules = [\n // do not replace if its already a plural word\n [regex.plural.men],\n [regex.plural.people],\n [regex.plural.children],\n [regex.plural.tia],\n [regex.plural.analyses],\n [regex.plural.databases],\n [regex.plural.drives],\n [regex.plural.hives],\n [regex.plural.curves],\n [regex.plural.lrves],\n [regex.plural.foves],\n [regex.plural.aeiouyies],\n [regex.plural.series],\n [regex.plural.movies],\n [regex.plural.xes],\n [regex.plural.mice],\n [regex.plural.buses],\n [regex.plural.oes],\n [regex.plural.shoes],\n [regex.plural.crises],\n [regex.plural.octopuses],\n [regex.plural.aliases],\n [regex.plural.summonses],\n [regex.plural.oxen],\n [regex.plural.matrices],\n [regex.plural.feet],\n [regex.plural.teeth],\n [regex.plural.geese],\n [regex.plural.quizzes],\n [regex.plural.whereases],\n [regex.plural.criteria],\n [regex.plural.genera],\n // original rule\n [regex.singular.man, '$1en'],\n [regex.singular.person, '$1ople'],\n [regex.singular.child, '$1ren'],\n [regex.singular.drive, '$1s'],\n [regex.singular.ox, '$1en'],\n [regex.singular.axis, '$1es'],\n [regex.singular.octopus, '$1uses'],\n [regex.singular.alias, '$1es'],\n [regex.singular.summons, '$1es'],\n [regex.singular.bus, '$1ses'],\n [regex.singular.buffalo, '$1oes'],\n [regex.singular.tium, '$1a'],\n [regex.singular.sis, 'ses'],\n [regex.singular.ffe, '$1$2ves'],\n [regex.singular.hive, '$1ves'],\n [regex.singular.aeiouyy, '$1ies'],\n [regex.singular.matrix, '$1ices'],\n [regex.singular.vertex, '$1ices'],\n [regex.singular.x, '$1es'],\n [regex.singular.mouse, '$1ice'],\n [regex.singular.foot, 'feet'],\n [regex.singular.tooth, 'teeth'],\n [regex.singular.goose, 'geese'],\n [regex.singular.quiz, '$1zes'],\n [regex.singular.whereas, '$1es'],\n [regex.singular.criterion, '$1a'],\n [regex.singular.genus, 'genera'],\n [regex.singular.s, 's'],\n [regex.singular.common, 's'],\n];\n/**\n * @description These rules translate from the plural form of a noun to its singular form.\n */\nconst singularRules = [\n // do not replace if its already a singular word\n [regex.singular.man],\n [regex.singular.person],\n [regex.singular.child],\n [regex.singular.drive],\n [regex.singular.ox],\n [regex.singular.axis],\n [regex.singular.octopus],\n [regex.singular.alias],\n [regex.singular.summons],\n [regex.singular.bus],\n [regex.singular.buffalo],\n [regex.singular.tium],\n [regex.singular.sis],\n [regex.singular.ffe],\n [regex.singular.hive],\n [regex.singular.aeiouyy],\n [regex.singular.x],\n [regex.singular.matrix],\n [regex.singular.mouse],\n [regex.singular.foot],\n [regex.singular.tooth],\n [regex.singular.goose],\n [regex.singular.quiz],\n [regex.singular.whereas],\n [regex.singular.criterion],\n [regex.singular.genus],\n // original rule\n [regex.plural.men, '$1an'],\n [regex.plural.people, '$1rson'],\n [regex.plural.children, '$1'],\n [regex.plural.databases, '$1'],\n [regex.plural.drives, '$1'],\n [regex.plural.genera, 'genus'],\n [regex.plural.criteria, '$1on'],\n [regex.plural.tia, '$1um'],\n [regex.plural.analyses, '$1$2sis'],\n [regex.plural.hives, '$1ve'],\n [regex.plural.curves, '$1'],\n [regex.plural.lrves, '$1f'],\n [regex.plural.aves, '$1ve'],\n [regex.plural.foves, '$1fe'],\n [regex.plural.movies, '$1ovie'],\n [regex.plural.aeiouyies, '$1y'],\n [regex.plural.series, '$1eries'],\n [regex.plural.xes, '$1'],\n [regex.plural.mice, '$1ouse'],\n [regex.plural.buses, '$1'],\n [regex.plural.oes, '$1'],\n [regex.plural.shoes, '$1'],\n [regex.plural.crises, '$1is'],\n [regex.plural.octopuses, '$1us'],\n [regex.plural.aliases, '$1'],\n [regex.plural.summonses, '$1'],\n [regex.plural.oxen, '$1'],\n [regex.plural.matrices, '$1ix'],\n [regex.plural.vertices, '$1ex'],\n [regex.plural.feet, 'foot'],\n [regex.plural.teeth, 'tooth'],\n [regex.plural.geese, 'goose'],\n [regex.plural.quizzes, '$1'],\n [regex.plural.whereases, '$1'],\n [regex.plural.ss, 'ss'],\n [regex.plural.s, ''],\n];\n/**\n * @description This is a list of words that should not be capitalized for title case.\n */\nconst nonTitlecasedWords = [\n 'and',\n 'or',\n 'nor',\n 'a',\n 'an',\n 'the',\n 'so',\n 'but',\n 'to',\n 'of',\n 'at',\n 'by',\n 'from',\n 'into',\n 'on',\n 'onto',\n 'off',\n 'out',\n 'in',\n 'over',\n 'with',\n 'for',\n];\n/**\n * @description These are regular expressions used for converting between String formats.\n */\nconst idSuffix = new RegExp('(_ids|_id)$', 'g');\nconst underbar = new RegExp('_', 'g');\nconst spaceOrUnderbar = new RegExp('[ _]', 'g');\nconst uppercase = new RegExp('([A-Z])', 'g');\nconst underbarPrefix = new RegExp('^_');\n/**\n * A helper method that applies rules based replacement to a String.\n * @param str String to modify and return based on the passed rules.\n * @param rules Regexp to match paired with String to use for replacement\n * @param skip Strings to skip if they match\n * @param override String to return as though this method succeeded (used to conform to APIs)\n * @returns Return passed String modified by passed rules.\n * @example\n *\n * applyRules( 'cows', singular_rules ); // === 'cow'\n */\nfunction applyRules(str, rules, skip, override) {\n if (override) {\n return override;\n }\n else {\n if (skip.includes(str.toLocaleLowerCase())) {\n return str;\n }\n for (const rule of rules) {\n if (str.match(rule[0])) {\n if (rule[1] !== undefined) {\n return str.replace(rule[0], rule[1]);\n }\n return str;\n }\n }\n }\n return str;\n}\n/**\n * This function adds pluralization support to every String object.\n * @param str The subject string.\n * @param plural Overrides normal output with said String.(optional)\n * @returns Singular English language nouns are returned in plural form.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.pluralize( 'person' ); // === 'people'\n * inflection.pluralize( 'octopus' ); // === 'octopuses'\n * inflection.pluralize( 'Hat' ); // === 'Hats'\n * inflection.pluralize( 'person', 'guys' ); // === 'guys'\n */\nfunction pluralize(str, plural) {\n return applyRules(str, pluralRules, uncountableWords, plural);\n}\nexports.pluralize = pluralize;\n/**\n * This function adds singularization support to every String object.\n * @param str The subject string.\n * @param singular Overrides normal output with said String.(optional)\n * @returns Plural English language nouns are returned in singular form.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.singularize( 'people' ); // === 'person'\n * inflection.singularize( 'octopuses' ); // === 'octopus'\n * inflection.singularize( 'Hats' ); // === 'Hat'\n * inflection.singularize( 'guys', 'person' ); // === 'person'\n */\nfunction singularize(str, singular) {\n return applyRules(str, singularRules, uncountableWords, singular);\n}\nexports.singularize = singularize;\n/**\n * This function will pluralize or singularlize a String appropriately based on a number value\n * @param str The subject string.\n * @param count The number to base pluralization off of.\n * @param singular Overrides normal output with said String.(optional)\n * @param plural Overrides normal output with said String.(optional)\n * @returns English language nouns are returned in the plural or singular form based on the count.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.inflect( 'people' 1 ); // === 'person'\n * inflection.inflect( 'octopuses' 1 ); // === 'octopus'\n * inflection.inflect( 'Hats' 1 ); // === 'Hat'\n * inflection.inflect( 'guys', 1 , 'person' ); // === 'person'\n * inflection.inflect( 'inches', 1.5 ); // === 'inches'\n * inflection.inflect( 'person', 2 ); // === 'people'\n * inflection.inflect( 'octopus', 2 ); // === 'octopuses'\n * inflection.inflect( 'Hat', 2 ); // === 'Hats'\n * inflection.inflect( 'person', 2, null, 'guys' ); // === 'guys'\n */\nfunction inflect(str, count, singular, plural) {\n if (isNaN(count))\n return str;\n if (count === 1) {\n return applyRules(str, singularRules, uncountableWords, singular);\n }\n else {\n return applyRules(str, pluralRules, uncountableWords, plural);\n }\n}\nexports.inflect = inflect;\n/**\n * This function adds camelization support to every String object.\n * @param str The subject string.\n * @param lowFirstLetter Default is to capitalize the first letter of the results.(optional)\n * Passing true will lowercase it.\n * @returns Lower case underscored words will be returned in camel case.\n * additionally '/' is translated to '::'\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.camelize( 'message_properties' ); // === 'MessageProperties'\n * inflection.camelize( 'message_properties', true ); // === 'messageProperties'\n */\nfunction camelize(str, lowFirstLetter) {\n const strPath = str.split('/');\n const j = strPath.length;\n let strArr, k, l, first;\n for (let i = 0; i < j; i++) {\n strArr = strPath[i].split('_');\n k = 0;\n l = strArr.length;\n for (; k < l; k++) {\n if (k !== 0) {\n strArr[k] = strArr[k].toLowerCase();\n }\n first = strArr[k].charAt(0);\n first =\n lowFirstLetter && i === 0 && k === 0\n ? first.toLowerCase()\n : first.toUpperCase();\n strArr[k] = first + strArr[k].substring(1);\n }\n strPath[i] = strArr.join('');\n }\n return strPath.join('::');\n}\nexports.camelize = camelize;\n/**\n * This function adds underscore support to every String object.\n * @param str The subject string.\n * @param allUpperCase Default is to lowercase and add underscore prefix.(optional)\n * Passing true will return as entered.\n * @returns Camel cased words are returned as lower cased and underscored.\n * additionally '::' is translated to '/'.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.underscore( 'MessageProperties' ); // === 'message_properties'\n * inflection.underscore( 'messageProperties' ); // === 'message_properties'\n * inflection.underscore( 'MP', true ); // === 'MP'\n */\nfunction underscore(str, allUpperCase) {\n if (allUpperCase && str === str.toUpperCase())\n return str;\n const strPath = str.split('::');\n const j = strPath.length;\n for (let i = 0; i < j; i++) {\n strPath[i] = strPath[i].replace(uppercase, '_$1');\n strPath[i] = strPath[i].replace(underbarPrefix, '');\n }\n return strPath.join('/').toLowerCase();\n}\nexports.underscore = underscore;\n/**\n * This function adds humanize support to every String object.\n * @param str The subject string.\n * @param lowFirstLetter Default is to capitalize the first letter of the results.(optional)\n * Passing true will lowercase it.\n * @returns Lower case underscored words will be returned in humanized form.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.humanize( 'message_properties' ); // === 'Message properties'\n * inflection.humanize( 'message_properties', true ); // === 'message properties'\n */\nfunction humanize(str, lowFirstLetter) {\n str = str.toLowerCase();\n str = str.replace(idSuffix, '');\n str = str.replace(underbar, ' ');\n if (!lowFirstLetter) {\n str = capitalize(str);\n }\n return str;\n}\nexports.humanize = humanize;\n/**\n * This function adds capitalization support to every String object.\n * @param str The subject string.\n * @returns All characters will be lower case and the first will be upper.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.capitalize( 'message_properties' ); // === 'Message_properties'\n * inflection.capitalize( 'message properties', true ); // === 'Message properties'\n */\nfunction capitalize(str) {\n str = str.toLowerCase();\n return str.substring(0, 1).toUpperCase() + str.substring(1);\n}\nexports.capitalize = capitalize;\n/**\n * This function replaces underscores with dashes in the string.\n * @param str The subject string.\n * @returns Replaces all spaces or underscores with dashes.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.dasherize( 'message_properties' ); // === 'message-properties'\n * inflection.dasherize( 'Message Properties' ); // === 'Message-Properties'\n */\nfunction dasherize(str) {\n return str.replace(spaceOrUnderbar, '-');\n}\nexports.dasherize = dasherize;\n/**\n * This function adds titleize support to every String object.\n * @param str The subject string.\n * @returns Capitalizes words as you would for a book title.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.titleize( 'message_properties' ); // === 'Message Properties'\n * inflection.titleize( 'message properties to keep' ); // === 'Message Properties to Keep'\n */\nfunction titleize(str) {\n str = str.toLowerCase().replace(underbar, ' ');\n const strArr = str.split(' ');\n const j = strArr.length;\n let d, l;\n for (let i = 0; i < j; i++) {\n d = strArr[i].split('-');\n l = d.length;\n for (let k = 0; k < l; k++) {\n if (nonTitlecasedWords.indexOf(d[k].toLowerCase()) < 0) {\n d[k] = capitalize(d[k]);\n }\n }\n strArr[i] = d.join('-');\n }\n str = strArr.join(' ');\n str = str.substring(0, 1).toUpperCase() + str.substring(1);\n return str;\n}\nexports.titleize = titleize;\n/**\n * This function adds demodulize support to every String object.\n * @param str The subject string.\n * @returns Removes module names leaving only class names.(Ruby style)\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.demodulize( 'Message::Bus::Properties' ); // === 'Properties'\n */\nfunction demodulize(str) {\n const strArr = str.split('::');\n return strArr[strArr.length - 1];\n}\nexports.demodulize = demodulize;\n/**\n * This function adds tableize support to every String object.\n * @param str The subject string.\n * @returns Return camel cased words into their underscored plural form.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.tableize( 'MessageBusProperty' ); // === 'message_bus_properties'\n */\nfunction tableize(str) {\n str = underscore(str);\n str = pluralize(str);\n return str;\n}\nexports.tableize = tableize;\n/**\n * This function adds classification support to every String object.\n * @param str The subject string.\n * @returns Underscored plural nouns become the camel cased singular form.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.classify( 'message_bus_properties' ); // === 'MessageBusProperty'\n */\nfunction classify(str) {\n str = camelize(str);\n str = singularize(str);\n return str;\n}\nexports.classify = classify;\n/**\n * This function adds foreign key support to every String object.\n * @param str The subject string.\n * @param dropIdUbar Default is to seperate id with an underbar at the end of the class name,\n you can pass true to skip it.(optional)\n * @returns Underscored plural nouns become the camel cased singular form.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.foreign_key( 'MessageBusProperty' ); // === 'message_bus_property_id'\n * inflection.foreign_key( 'MessageBusProperty', true ); // === 'message_bus_propertyid'\n */\nfunction foreignKey(str, dropIdUbar) {\n str = demodulize(str);\n str = underscore(str) + (dropIdUbar ? '' : '_') + 'id';\n return str;\n}\nexports.foreignKey = foreignKey;\n/**\n * This function adds ordinalize support to every String object.\n * @param str The subject string.\n * @returns Return all found numbers their sequence like '22nd'.\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.ordinalize( 'the 1 pitch' ); // === 'the 1st pitch'\n */\nfunction ordinalize(str) {\n const strArr = str.split(' ');\n const j = strArr.length;\n for (let i = 0; i < j; i++) {\n const k = parseInt(strArr[i], 10);\n if (!isNaN(k)) {\n const ltd = strArr[i].substring(strArr[i].length - 2);\n const ld = strArr[i].substring(strArr[i].length - 1);\n let suf = 'th';\n if (ltd != '11' && ltd != '12' && ltd != '13') {\n if (ld === '1') {\n suf = 'st';\n }\n else if (ld === '2') {\n suf = 'nd';\n }\n else if (ld === '3') {\n suf = 'rd';\n }\n }\n strArr[i] += suf;\n }\n }\n return strArr.join(' ');\n}\nexports.ordinalize = ordinalize;\nconst transformFunctions = {\n pluralize,\n singularize,\n camelize,\n underscore,\n humanize,\n capitalize,\n dasherize,\n titleize,\n demodulize,\n tableize,\n classify,\n foreignKey,\n ordinalize,\n};\n/**\n * This function performs multiple inflection methods on a string\n * @param str The subject string.\n * @param arr An array of inflection methods.\n * @returns\n * @example\n *\n * const inflection = require( 'inflection' );\n *\n * inflection.transform( 'all job', [ 'pluralize', 'capitalize', 'dasherize' ]); // === 'All-jobs'\n */\nfunction transform(str, arr) {\n const j = arr.length;\n for (let i = 0; i < j; i++) {\n const method = arr[i];\n const methodFn = transformFunctions[method];\n if (methodFn) {\n str = methodFn(str);\n }\n }\n return str;\n}\nexports.transform = transform;\n"],"names":["inflection","uncountableWords","regex","pluralRules","singularRules","nonTitlecasedWords","idSuffix","underbar","spaceOrUnderbar","uppercase","underbarPrefix","applyRules","str","rules","skip","override","rule","pluralize","plural","singularize","singular","inflect","count","camelize","lowFirstLetter","strPath","j","strArr","k","l","first","i","underscore","allUpperCase","humanize","capitalize","dasherize","titleize","d","demodulize","tableize","classify","foreignKey","dropIdUbar","ordinalize","ltd","ld","suf","transformFunctions","transform","arr","method","methodFn"],"mappings":"0CACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,GAAM,EAC5DA,EAAA,UAAoBA,EAAA,WAAqBA,EAAA,WAAqBA,EAAA,SAAmBA,EAAA,SAAmBA,EAAA,WAAqBA,EAAA,SAAmBA,EAAiB,UAAGA,EAAkB,WAAGA,EAAgB,SAAGA,EAAkB,WAAGA,EAAgB,SAAGA,EAAe,QAAGA,EAAmB,YAAGA,EAAiB,UAAG,OAK5S,MAAMC,EAAmB,CAErB,gBACA,YACA,cACA,SACA,aACA,MACA,MACA,WACA,UACA,QACA,WACA,aAEA,aACA,YAEA,QACA,UAGA,OAGA,UAEA,QACA,SAEA,QAEA,SACA,SACA,YACA,OACA,QACA,QACA,QACA,aACA,cAEA,UAEA,OAGA,UACA,OAEA,OACA,YACA,YACA,cAGA,cACA,YAEA,OACA,YACA,SACA,WACA,YAGA,OACA,UAEA,QACA,MACA,OAGA,OACA,MAEA,YACA,UACA,UACA,SAEA,WAEA,OACA,OACA,SAEA,YACA,QAEA,QACA,aAEA,YACA,WACA,OACA,OACA,SACA,SACA,OAEA,OACA,WACA,UACA,QACA,cACA,YACA,SACA,SACA,WACA,MACA,aACA,YACA,cAEA,YAEA,OACA,QACA,MAGA,UAEA,OAGA,SAEA,YAEA,OAEA,WACA,OACA,UACA,UACA,YACA,WACA,WACA,cACA,aACA,SACA,YACA,QACA,aAEA,OACA,UACA,WACA,YACA,QAEA,aACA,UACA,SACA,cACA,aACA,UAGA,UACA,OACA,QACA,QAEA,MACA,QACA,QACA,SACA,OACA,WACA,WACA,UACA,YACA,YACA,UAEA,SAGA,QACA,WAEA,UACA,SACA,YACA,UAEA,QAIA,aACA,YACA,cAGA,SACA,SAGA,aACA,cACA,WACA,UACA,UACA,OACA,UACA,MACA,SAKA,UACA,UACA,UACA,SACA,QACA,QACA,WAEA,QAEA,QACA,UACA,OACA,OACA,WACA,OAGA,YAEA,UAGA,QAEA,QACA,YAGA,WACA,WAEA,SACA,SACA,UACA,SAKA,UACA,iBAEA,QA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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as o}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{j as e}from"./index.esm-CyH9wtdI.js";import{c as s}from"./index-BS45dlQs.js";const{FeatureComboboxFieldController:r}=await o("@baseplate-dev/project-builder-lib/web"),{InputFieldController:i}=await o("@baseplate-dev/ui-components");function c({className:t,control:a}){return e.jsxs("div",{className:s("space-y-4",t),children:[e.jsx(i,{control:a,label:"Name",name:"name",description:"The name of the model (PascalCase)"}),e.jsx(r,{control:a,name:"featureRef",description:"The feature this model belongs to (dash-case)",canCreate:!0})]})}export{c as M};
|
|
2
|
+
//# sourceMappingURL=model-info-form-B9t3m8Pj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-info-form-B9t3m8Pj.js","sources":["../../src/routes/data/models/edit.$key/-components/model-info-form.tsx"],"sourcesContent":["import type { ModelConfigInput } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport { FeatureComboboxFieldController } from '@baseplate-dev/project-builder-lib/web';\nimport { InputFieldController } from '@baseplate-dev/ui-components';\nimport { clsx } from 'clsx';\n\ninterface ModelInfoFormProps {\n className?: string;\n control: Control<ModelConfigInput>;\n}\n\nexport function ModelInfoForm({\n className,\n control,\n}: ModelInfoFormProps): React.JSX.Element {\n return (\n <div className={clsx('space-y-4', className)}>\n <InputFieldController\n control={control}\n label=\"Name\"\n name=\"name\"\n description=\"The name of the model (PascalCase)\"\n />\n <FeatureComboboxFieldController\n control={control}\n name=\"featureRef\"\n description=\"The feature this model belongs to (dash-case)\"\n canCreate\n />\n </div>\n );\n}\n"],"names":["FeatureComboboxFieldController","importShared","InputFieldController","ModelInfoForm","className","control","clsx","jsx"],"mappings":"sJAIA,KAAA,CAAA,+BAAAA,CAAA,EAAA,MAAAC,EAAA,wCAAA,EACA,CAAA,qBAAAC,CAAA,EAAA,MAAAD,EAAA,8BAAA,EAQO,SAASE,EAAc,CAC5B,UAAAC,EACA,QAAAC,CACF,EAA0C,CACxC,cACG,MAAI,CAAA,UAAWC,EAAK,YAAaF,CAAS,EACzC,SAAA,CAAAG,EAAA,IAACL,EAAA,CACC,QAAAG,EACA,MAAM,OACN,KAAK,OACL,YAAY,oCAAA,CACd,EACAE,EAAA,IAACP,EAAA,CACC,QAAAK,EACA,KAAK,aACL,YAAY,gDACZ,UAAS,EAAA,CAAA,CACX,EACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as F}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{g as Y,a as D,e as T}from"./isEqual-C420KeG-.js";function $(e){return e==null||typeof e!="object"&&typeof e!="function"}function C(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function g(e,t,i,n=new Map,s=void 0){const o=s?.(e,t,i,n);if(o!=null)return o;if($(e))return e;if(n.has(e))return n.get(e);if(Array.isArray(e)){const r=new Array(e.length);n.set(e,r);for(let f=0;f<e.length;f++)r[f]=g(e[f],f,i,n,s);return Object.hasOwn(e,"index")&&(r.index=e.index),Object.hasOwn(e,"input")&&(r.input=e.input),r}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){const r=new RegExp(e.source,e.flags);return r.lastIndex=e.lastIndex,r}if(e instanceof Map){const r=new Map;n.set(e,r);for(const[f,a]of e)r.set(f,g(a,f,i,n,s));return r}if(e instanceof Set){const r=new Set;n.set(e,r);for(const f of e)r.add(g(f,void 0,i,n,s));return r}if(typeof Buffer<"u"&&Buffer.isBuffer(e))return e.subarray();if(C(e)){const r=new(Object.getPrototypeOf(e)).constructor(e.length);n.set(e,r);for(let f=0;f<e.length;f++)r[f]=g(e[f],f,i,n,s);return r}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);if(e instanceof DataView){const r=new DataView(e.buffer.slice(0),e.byteOffset,e.byteLength);return n.set(e,r),w(r,e,i,n,s),r}if(typeof File<"u"&&e instanceof File){const r=new File([e],e.name,{type:e.type});return n.set(e,r),w(r,e,i,n,s),r}if(e instanceof Blob){const r=new Blob([e],{type:e.type});return n.set(e,r),w(r,e,i,n,s),r}if(e instanceof Error){const r=new e.constructor;return n.set(e,r),r.message=e.message,r.name=e.name,r.stack=e.stack,r.cause=e.cause,w(r,e,i,n,s),r}if(typeof e=="object"&&e!==null){const r=Object.create(Object.getPrototypeOf(e));return n.set(e,r),w(r,e,i,n,s),r}return e}function w(e,t,i=e,n,s){const o=[...Object.keys(t),...Y(t)];for(let r=0;r<o.length;r++){const f=o[r],a=Object.getOwnPropertyDescriptor(e,f);(a==null||a.writable)&&(e[f]=g(t[f],f,i,n,s))}}function q(e){return g(e,void 0,e,new Map,void 0)}function j(e,t){const i={},n=Object.keys(e);for(let s=0;s<n.length;s++){const o=n[s],r=e[o];i[o]=t(r,o,e)}return i}function b(e,t){const i=Object.keys(t);for(let n=0;n<i.length;n++){const s=i[n],o=t[s],r=e[s];Array.isArray(o)?Array.isArray(r)?e[s]=b(r,o):e[s]=b([],o):D(o)?D(r)?e[s]=b(r,o):e[s]=b({},o):(r===void 0||o!==void 0)&&(e[s]=o)}return e}function N(e,t){const i={...e};for(let n=0;n<t.length;n++){const s=t[n];delete i[s]}return i}function v(e,t){return b(q(e),t)}let ee=e=>crypto.getRandomValues(new Uint8Array(e)),te=(e,t,i)=>{let n=(2<<Math.log2(e.length-1))-1,s=-~(1.6*n*t/e.length);return(o=t)=>{let r="";for(;;){let f=i(s),a=s|0;for(;a--;)if(r+=e[f[a]&n]||"",r.length>=o)return r}}},re=(e,t=21)=>te(e,t|0,ee);const ne="0123456789",ie="abcdefghijklmnopqrstuvwxyz",se="ABCDEFGHIJKLMNOPQRSTUVWXYZ",fe=re(`${ne}${ie}${se}_`,12);function oe(e=12){return fe(e)}const{z:R}=await F("zod"),ae=/^[a-z0-9-]+$/,K=/^[A-Z][a-zA-Z0-9]*$/,ue=/^[a-z][a-zA-Z0-9]*$/,de=/^[A-Z][A-Z0-9_]*$/,ce={KEBAB_CASE:R.string().regex(ae,{message:'Must be kebab case (e.g. "my-project")'}),PASCAL_CASE:R.string().regex(K,{message:'Must be pascal case (e.g. "MyProject")'}),CAMEL_CASE:R.string().regex(ue,{message:'Must be camel case (e.g. "myProject")'}),CONSTANT_CASE:R.string().regex(de,{message:'Must be constant case (e.g. "MY_PROJECT")'})};function ft(e,t){return{spec:e,implementation:t}}function ot(e,t){const{platforms:i,defaultInitializer:n}=t??{};return{type:"plugin-spec",name:e,platforms:i&&(Array.isArray(i)?i:[i]),isOptional:!1,optional(){return{...this,isOptional:!0}},defaultInitializer:n}}class le{constructor(t,i,n){Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"parentType",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(this,"prefix",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.prefix=i??t.split("/").pop()??t}generateNewId(){return`${this.prefix}:${oe()}`}idFromKey(t){if(t)return`${this.prefix}:${t}`}keyFromId(t){return t.split(":")[1]}isId(t){return t.startsWith(`${this.prefix}:`)}}function p(e,t){const{parentType:i,prefix:n}=t??{};return new le(e,n,i)}class pe{constructor(t,i){Object.defineProperty(this,"value",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"reference",{enumerable:!0,configurable:!0,writable:!0,value:i})}toString(){return this.value??""}}const m=Symbol("refAnnotationsMarker"),{z:ye}=await F("zod");function me({transformReferences:e}){function t(s){return ye.string().transform(o=>e&&o?new pe(o,s):o)}function i(s,o){if(!("id"in s.shape))throw new Error(`Entity must have an id field. Entity type: ${o.type.name}. Schema keys: ${Object.keys(s.shape).join(", ")}`);return s.transform(r=>{if(!("id"in r)||!o.type.isId(r.id))throw new Error(`Invalid id for entity ${o.type.name}. Id: ${r.id}`);if(e){const f=m in r?r[m]:void 0;return{...r,[m]:{entities:[...f?.entities??[],o],references:f?.references??[],contextPaths:f?.contextPaths??[]}}}return r})}function n(s,o){return s.transform(r=>{if(!r)return r;if(typeof r!="object")throw new TypeError(`refBuilder requires an object, but got ${typeof r}`);const f=m in r?r[m]:void 0,a=f?.entities??[],d=f?.references??[],u=f?.contextPaths??[];return o?.({addReference:l=>{d.push(l)},addEntity:l=>{a.push(l)},addPathToContext:(l,H,J)=>{u.push({path:l,type:H,context:J})}},r),e?{...r,[m]:{entities:a,references:d,contextPaths:u}}:r})}return{withRef:t,withEnt:i,withRefBuilder:n}}const{z:ge}=await F("zod");function he(e){return Array.isArray(e)?e.length===0:typeof e=="object"&&e!==null?Object.values(e).every(t=>t===void 0):e===!1||e===""}function we(e){const t=e.defaultMode??"populate";return{withDefault:function(n,s){const o=n.optional();switch(t){case"populate":return ge.preprocess(r=>r===void 0?s:r,o);case"strip":return o.transform(r=>{if(!he(r))return r});case"preserve":return o.transform(r=>r)}}}}function at(e){return{...e,...me(e),...we(e)}}function _(e){return t=>e(t)}function be(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e.includes(".")||e.includes("[")||e.includes("]")}}function Re(e){return Object.is(e,-0)?"-0":e.toString()}function z(e){const t=[],i=e.length;if(i===0)return t;let n=0,s="",o="",r=!1;for(e.charCodeAt(0)===46&&(t.push(""),n++);n<i;){const f=e[n];o?f==="\\"&&n+1<i?(n++,s+=e[n]):f===o?o="":s+=f:r?f==='"'||f==="'"?o=f:f==="]"?(r=!1,t.push(s),s=""):s+=f:f==="["?(r=!0,s&&(t.push(s),s="")):f==="."?s&&(t.push(s),s=""):s+=f,n++}return s&&t.push(s),t}function E(e,t,i){if(e==null)return i;switch(typeof t){case"string":{const n=e[t];return n===void 0?be(t)?E(e,z(t),i):i:n}case"number":case"symbol":{typeof t=="number"&&(t=Re(t));const n=e[t];return n===void 0?i:n}default:{if(Array.isArray(t))return Ae(e,t,i);Object.is(t?.valueOf(),-0)?t="-0":t=String(t);const n=e[t];return n===void 0?i:n}}}function Ae(e,t,i){if(t.length===0)return i;let n=e;for(let s=0;s<t.length;s++){if(n==null)return i;n=n[t[s]]}return n===void 0?i:n}function Ee(e){return e!==null&&(typeof e=="object"||typeof e=="function")}function h(e,t){if(t===e)return!0;switch(typeof t){case"object":{if(t==null)return!0;const i=Object.keys(t);if(e==null)return i.length===0;if(Array.isArray(t))return L(e,t);if(t instanceof Map)return Me(e,t);if(t instanceof Set)return Ie(e,t);for(let n=0;n<i.length;n++){const s=i[n];if(!$(e)&&!(s in e)||t[s]===void 0&&e[s]!==void 0||t[s]===null&&e[s]!==null||!h(e[s],t[s]))return!1}return!0}case"function":return Object.keys(t).length>0?h(e,{...t}):!1;default:return Ee(e)?!t:T(e,t)}}function Me(e,t){if(t.size===0)return!0;if(!(e instanceof Map))return!1;for(const[i,n]of t.entries())if(!h(e.get(i),n))return!1;return!0}function L(e,t){if(t.length===0)return!0;if(!Array.isArray(e))return!1;const i=new Set;for(let n=0;n<t.length;n++){const s=t[n],o=e.findIndex((r,f)=>h(r,s)&&!i.has(f));if(o===-1)return!1;i.add(o)}return!0}function Ie(e,t){return t.size===0?!0:e instanceof Set?L([...e],[...t]):!1}const Fe=/^(?:0|[1-9]\d*)$/;function Oe(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e<t;case"symbol":return!1;case"string":return Fe.test(e)}}function Se(e,t,i){const n=Array.isArray(t)?t:typeof t=="string"?z(t):[t];let s=e;for(let r=0;r<n.length-1;r++){const f=n[r],a=n[r+1];s[f]==null&&(s[f]=Oe(a)?[]:{}),s=s[f]}const o=n[n.length-1];return s[o]=i,e}const{z:A}=await F("zod"),M=p("feature"),k=ce.KEBAB_CASE,je=_(e=>e.withEnt(A.object({id:A.string(),name:A.string().min(1).refine(t=>t.split("/").every(i=>k.safeParse(i).success),{message:"Feature name must be lowercase and contain only letters, numbers, and dashes"}),parentRef:e.withRef({type:M,onDelete:"DELETE_PARENT"}).optional()}),{type:M})),ut=_(e=>A.array(je(e)).default([])),y=p("model"),xe=p("model-scalar-field",{parentType:y}),Pe=p("model-local-relation",{parentType:y}),De=p("model-foreign-relation",{parentType:y}),Ne=p("model-unique-constraint",{parentType:y}),dt=p("model-transformer",{parentType:y}),Be=p("model-enum"),ct=p("model-enum-value",{parentType:Be});function $e(e){return e.features.filter(t=>!t.parentRef)}function G(e,t){return e.features.find(i=>i.id===t)}function x(e,t){const i=G(e,t);if(!i)throw new Error(`Could not find feature with ID ${t}`);return i}function qe(e,t){return e.features.filter(i=>i.parentRef===t)}function U(e){return e.name.split("/").pop()??""}function Ke(e,t){const i=x(e,t);return U(i)}function _e(e,t){return x(e,t).name}function ze(e){return e.split("/").every(i=>k.safeParse(i).success)}function Le(e,t){if(M.isId(t))return t;const i=t.split("/");let n="",s;for(const o of i){const r=e.features.find(a=>a.name===o&&a.parentRef===s),f=[n,o].filter(Boolean).join("/");if(r)s=r.id;else{const a={id:M.generateNewId(),name:f,parentRef:s};e.features.push(a),s=a.id}n=f}if(!s)throw new Error("Failed to create feature");return s}function W(e,t){return e.features.find(i=>i.name===t)}function ke(e,t){return W(e,t)?.id??t}const lt={getRootFeatures:$e,getFeatureById:G,getFeatureByIdOrThrow:x,getFeatureChildren:qe,getFeatureName:U,getFeatureNameById:Ke,getFeaturePathById:_e,validateFeatureName:ze,ensureFeatureByNameRecursively:Le,getFeatureByName:W,getFeatureIdByNameOrDefault:ke};function X(e,t){return e.models.find(i=>i.id===t)}function Ge(e,t){const i=X(e,t);if(!i)throw new Error(`Could not find model with ID ${t}`);return i}function Ue(e,t){const i=e.model.fields.find(n=>n.id===t);if(!i)throw new Error(`Could not find field with ID ${t}`);return i}function We(e,t){return e.models.flatMap(i=>i.model.relations?.filter(n=>n.modelRef===t).map(n=>({model:i,relation:n}))??[])}function Xe(e,t){return e.models.filter(i=>i.featureRef===t)}function Ze(e){return e.model.primaryKeyFieldRefs}function Qe(e){return!!e.service.create.enabled||!!e.service.update.enabled||!!e.service.delete.enabled||e.service.transformers.length>0}function Ve(e){return K.test(e)}function He(e,t){return e.models.find(i=>i.name===t)?.id??t}const I={byId:X,byIdOrThrow:Ge,getScalarFieldById:Ue,getRelationsToModel:We,getModelsForFeature:Xe,getModelIdFields:Ze,hasService:Qe,validateModelName:Ve,getModelIdByNameOrDefault:He};class P{constructor(t){Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:t})}}class O extends P{constructor(t,i,n={}){super(t),Object.defineProperty(this,"getKey",{enumerable:!0,configurable:!0,writable:!0,value:i}),Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:n}),this.getKey=i}diff(t,i){const n=t??[],s=i??[];if(!Array.isArray(n)||!Array.isArray(s))throw new TypeError("Current and desired must be arrays");const o=[],{allowRemove:r,ignoreFields:f=["id"]}=this.options,a=new Map(n.map(u=>[this.getKey(u),u])),d=new Map(s.map(u=>[this.getKey(u),u]));for(const[u,c]of d){const l=a.get(u);if(!l){o.push({type:"add",key:u,item:c});continue}h(N(l,f),N(c,f))||o.push({type:"update",key:u,item:c})}if(r)for(const[u,c]of a)d.has(u)||o.push({type:"remove",key:u,item:c});return o}apply(t,i){const n=i,s=t??[];if(!Array.isArray(s))throw new TypeError("Current must be array");const o=[...s];for(const{type:r,key:f,item:a}of n){const d=o.findIndex(u=>this.getKey(u)===f);switch(r){case"add":{o.push(a);break}case"update":{if(d===-1)throw new Error(`Cannot apply patch. Item with key "${f}" not found.`);o[d]=v(o[d],a);break}case"remove":{d!==-1&&o.splice(d,1);break}}}return o}getActionVerb(t){return t?"created":"added or updated"}}class B extends P{diff(t,i){return i===void 0?[]:h(t,i)?[]:[{type:"update",key:"*",item:i}]}apply(t,i){return i.length===0?t:i[0].item}getActionVerb(t){return t?"set":"replaced"}}class S extends P{constructor(t,i){super(t),Object.defineProperty(this,"getKey",{enumerable:!0,configurable:!0,writable:!0,value:i})}diff(t,i){const n=t??[],s=i??[];if(!Array.isArray(n)||!Array.isArray(s))throw new TypeError("Current and desired must be arrays");const o=[],r=new Set(this.getKey?n.map(this.getKey):n);for(const f of s){const a=this.getKey?this.getKey(f):String(f);r.has(a)||o.push({type:"add",key:a,item:f})}return o}apply(t,i){const n=t??[];if(!Array.isArray(n))throw new TypeError("Current must be array");const s=[...n];for(const{type:o,item:r}of i)o==="add"&&s.push(r);return s}getActionVerb(t){return t?"created":"added"}}function pt(e){return e}function Je(e,t,i){const n=j(i,(s,o)=>s?s.diff(E(e,o),E(t,o)):[]);if(!Object.values(n).every(s=>s.length===0))return n}function Ye(e,t,i){const n=q(e);for(const[s,o]of Object.entries(t)){if(!o)continue;const r=i[s],f=E(n,s);Se(n,s,r.apply(f,o))}return n}function Te(e){return e.fields.map(i=>i.fieldRef).sort().join("|")}const Z={"model.fields":new O("fields",e=>e.name),"model.relations":new O("relations",e=>e.name),"model.uniqueConstraints":new O("unique constraints",e=>Te(e)),"model.primaryKeyFieldRefs":new B("primary key fields"),"graphql.objectType.enabled":new B("GraphQL object type enabled"),"graphql.objectType.fields":new S("GraphQL object type fields"),"graphql.objectType.localRelations":new S("GraphQL object type local relations"),"graphql.objectType.foreignRelations":new S("GraphQL object type foreign relations")};function Q(e,t,i){const n=new Map([...e.model.fields.map(f=>[f.id,f.name]),...i.flatMap(f=>f.model.fields.map(a=>[a.id,a.name]))]),s=new Map([...(e.model.relations??[]).map(f=>[f.id,f.name]),...i.flatMap(f=>(f.model.relations??[]).map(a=>[a.id,a.name])),...(e.model.relations??[]).map(f=>[f.foreignId,f.foreignRelationName]),...i.flatMap(f=>(f.model.relations??[]).map(a=>[a.foreignId,a.foreignRelationName]))]),o=f=>n.get(f)??t.nameFromId(f),r=f=>s.get(f)??t.nameFromId(f);return{...e,model:{...e.model,relations:e.model.relations?.map(f=>({...f,references:f.references.map(a=>({...a,localRef:o(a.localRef),foreignRef:o(a.foreignRef)}))})),uniqueConstraints:e.model.uniqueConstraints?.map(f=>({...f,fields:f.fields.map(a=>({...a,fieldRef:o(a.fieldRef)}))})),primaryKeyFieldRefs:e.model.primaryKeyFieldRefs.map(o)},graphql:{...e.graphql,objectType:{...e.graphql?.objectType,fields:e.graphql?.objectType?.fields?.map(o)??[],localRelations:e.graphql?.objectType?.localRelations?.map(r)??[],foreignRelations:e.graphql?.objectType?.foreignRelations?.map(r)??[]}}}}function Ce(e){return{...e,model:{...e.model,fields:e.model.fields.map(t=>({...t,id:t.id??xe.generateNewId()})),relations:e.model.relations?.map(t=>({...t,id:t.id??Pe.generateNewId(),foreignId:t.foreignId??De.generateNewId()})),uniqueConstraints:e.model.uniqueConstraints?.map(t=>({...t,id:t.id??Ne.generateNewId()}))}}}function ve(e,t,i){const n=Ce(e),s=r=>{const f=n.model.fields.find(a=>a.name===r);if(!f)throw new Error(`Field ${r} not found`);return f.id},o=r=>{const f=n.model.relations?.find(a=>a.name===r);if(!f)throw new Error(`Relation ${r} not found`);return f.id};return{...n,model:{...n.model,relations:n.model.relations?.map(r=>({...r,references:r.references.map(f=>({...f,localRef:s(f.localRef),foreignRef:t(r.modelRef,f.foreignRef)}))})),uniqueConstraints:n.model.uniqueConstraints?.map(r=>({...r,fields:r.fields.map(f=>({...f,fieldRef:s(f.fieldRef)}))})),primaryKeyFieldRefs:n.model.primaryKeyFieldRefs.map(r=>s(r))},graphql:{...n.graphql,objectType:{...n.graphql?.objectType,fields:n.graphql?.objectType?.fields?.map(r=>s(r))??[],localRelations:n.graphql?.objectType?.localRelations?.map(r=>o(r))??[],foreignRelations:n.graphql?.objectType?.foreignRelations?.map(r=>i(r))??[]}}}}function V(e,t){return{id:y.generateNewId(),name:e,featureRef:t,model:{fields:[],primaryKeyFieldRefs:[]}}}function et(e,t,i,{siblingModels:n=[]}={}){const s=e??V(t.name,t.featureRef),o=Q(s,i,n),r=Je(o,t,Z);if(r)return{isNewModel:!e,id:s.id,name:s.name,featureRef:s.featureRef,changes:r}}function yt(e){return Object.values(e).some(t=>t?.changes)}function tt(e,t,i,{siblingModels:n=[]}={}){return j(t,(s,o)=>et(e[o]&&y.isId(e[o])?I.byIdOrThrow(i.definition,e[o]):void 0,s,i,{siblingModels:n}))}function rt(e,t,i,n=[]){const s=Q(e,i,n),o=Ye(s,t,Z);return{...e,...ve(o,(r,f)=>{const a=n.find(c=>c.id===r);if(a){const c=a.model.fields.find(l=>l.name===f);if(!c)throw new Error(`Field ${f} not found in sibling model ${r}`);return c.id}const d=I.byIdOrThrow(i.definition,r),u=d.model.fields.find(c=>c.name===f);if(!u)throw new Error(`Field ${f} not found in model ${d.name}`);return u.id},r=>{let f;for(const u of n){const c=u.model.relations?.find(l=>l.foreignRelationName===r);if(c){f=c.foreignId;break}}if(f)return f;const d=I.getRelationsToModel(i.definition,e.id).find(u=>u.relation.foreignRelationName===r&&u.relation.modelRef===e.id);if(!d)throw new Error(`Relation ${r} not found in model ${e.name}`);return d.relation.foreignId})}}function nt(e,t,i,{siblingModels:n=[]}={}){const s=t.isNewModel?V(t.name,t.featureRef):I.byIdOrThrow(i.definition,t.id),o=rt(s,t.changes,i,n);if(t.isNewModel)e.models.push(o);else{const r=e.models.findIndex(f=>f.id===t.id);if(r===-1)throw new Error(`Model ${t.id} not found`);e.models[r]=o}return o.id}function mt(e,t,i,n,{siblingModels:s=[]}={}){const o=tt(t,i,n,{siblingModels:s});return j(o,(r,f)=>r?nt(e,r,n,{siblingModels:s}):i[f].name)}export{tt as A,rt as B,ce as C,pe as D,nt as E,lt as F,mt as G,O as H,B as I,S as J,pt as K,Je as L,I as M,Ye as N,m as R,p as a,at as b,ot as c,_ as d,De as e,Pe as f,E as g,xe as h,dt as i,y as j,ct as k,M as l,j as m,Be as n,Ne as o,ut as p,N as q,q as r,Se as s,ft as t,le as u,k as v,je as w,Z as x,et as y,yt as z};
|
|
2
|
+
//# sourceMappingURL=model-merger-DL4MVNID.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-merger-DL4MVNID.js","sources":["../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/predicate/isPrimitive.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/cloneDeepWith.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/cloneDeep.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/mapValues.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/merge.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/omit.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/object/toMerged.mjs","../../../../node_modules/.pnpm/nanoid@5.0.9/node_modules/nanoid/index.browser.js","../../../utils/dist/string/random-key.js","../../../utils/dist/validators/case-validators.js","../../../project-builder-lib/dist/plugins/spec/types.js","../../../project-builder-lib/dist/references/types.js","../../../project-builder-lib/dist/references/markers.js","../../../project-builder-lib/dist/references/extend-parser-context-with-refs.js","../../../project-builder-lib/dist/schema/creator/extend-parser-context-with-defaults.js","../../../project-builder-lib/dist/schema/creator/schema-creator.js","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/_internal/toKey.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/util/toPath.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/object/get.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/predicate/isObject.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/predicate/isMatch.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/_internal/isIndex.mjs","../../../../node_modules/.pnpm/es-toolkit@1.31.0/node_modules/es-toolkit/dist/compat/object/set.mjs","../../../project-builder-lib/dist/schema/features/feature.js","../../../project-builder-lib/dist/schema/models/types.js","../../../project-builder-lib/dist/definition/feature/feature-utils.js","../../../project-builder-lib/dist/definition/model/model-utils.js","../../../project-builder-lib/dist/utils/definition-diff/definition-diff.js","../../../project-builder-lib/dist/tools/model-merger/model-merger.js"],"sourcesContent":["function isPrimitive(value) {\n return value == null || (typeof value !== 'object' && typeof value !== 'function');\n}\n\nexport { isPrimitive };\n","function isTypedArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\nexport { isTypedArray };\n","import { getSymbols } from '../compat/_internal/getSymbols.mjs';\nimport { isPrimitive } from '../predicate/isPrimitive.mjs';\nimport { isTypedArray } from '../predicate/isTypedArray.mjs';\n\nfunction cloneDeepWith(obj, cloneValue) {\n return cloneDeepWithImpl(obj, undefined, obj, new Map(), cloneValue);\n}\nfunction cloneDeepWithImpl(valueToClone, keyToClone, objectToClone, stack = new Map(), cloneValue = undefined) {\n const cloned = cloneValue?.(valueToClone, keyToClone, objectToClone, stack);\n if (cloned != null) {\n return cloned;\n }\n if (isPrimitive(valueToClone)) {\n return valueToClone;\n }\n if (stack.has(valueToClone)) {\n return stack.get(valueToClone);\n }\n if (Array.isArray(valueToClone)) {\n const result = new Array(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n if (Object.hasOwn(valueToClone, 'index')) {\n result.index = valueToClone.index;\n }\n if (Object.hasOwn(valueToClone, 'input')) {\n result.input = valueToClone.input;\n }\n return result;\n }\n if (valueToClone instanceof Date) {\n return new Date(valueToClone.getTime());\n }\n if (valueToClone instanceof RegExp) {\n const result = new RegExp(valueToClone.source, valueToClone.flags);\n result.lastIndex = valueToClone.lastIndex;\n return result;\n }\n if (valueToClone instanceof Map) {\n const result = new Map();\n stack.set(valueToClone, result);\n for (const [key, value] of valueToClone) {\n result.set(key, cloneDeepWithImpl(value, key, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (valueToClone instanceof Set) {\n const result = new Set();\n stack.set(valueToClone, result);\n for (const value of valueToClone) {\n result.add(cloneDeepWithImpl(value, undefined, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(valueToClone)) {\n return valueToClone.subarray();\n }\n if (isTypedArray(valueToClone)) {\n const result = new (Object.getPrototypeOf(valueToClone).constructor)(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n return result;\n }\n if (valueToClone instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer !== 'undefined' && valueToClone instanceof SharedArrayBuffer)) {\n return valueToClone.slice(0);\n }\n if (valueToClone instanceof DataView) {\n const result = new DataView(valueToClone.buffer.slice(0), valueToClone.byteOffset, valueToClone.byteLength);\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof File !== 'undefined' && valueToClone instanceof File) {\n const result = new File([valueToClone], valueToClone.name, {\n type: valueToClone.type,\n });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Blob) {\n const result = new Blob([valueToClone], { type: valueToClone.type });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Error) {\n const result = new valueToClone.constructor();\n stack.set(valueToClone, result);\n result.message = valueToClone.message;\n result.name = valueToClone.name;\n result.stack = valueToClone.stack;\n result.cause = valueToClone.cause;\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof valueToClone === 'object' && valueToClone !== null) {\n const result = Object.create(Object.getPrototypeOf(valueToClone));\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n return valueToClone;\n}\nfunction copyProperties(target, source, objectToClone = target, stack, cloneValue) {\n const keys = [...Object.keys(source), ...getSymbols(source)];\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\n if (descriptor == null || descriptor.writable) {\n target[key] = cloneDeepWithImpl(source[key], key, objectToClone, stack, cloneValue);\n }\n }\n}\n\nexport { cloneDeepWith, cloneDeepWithImpl, copyProperties };\n","import { cloneDeepWithImpl } from './cloneDeepWith.mjs';\n\nfunction cloneDeep(obj) {\n return cloneDeepWithImpl(obj, undefined, obj, new Map(), undefined);\n}\n\nexport { cloneDeep };\n","function mapValues(object, getNewValue) {\n const result = {};\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = object[key];\n result[key] = getNewValue(value, key, object);\n }\n return result;\n}\n\nexport { mapValues };\n","import { isPlainObject } from '../predicate/isPlainObject.mjs';\n\nfunction merge(target, source) {\n const sourceKeys = Object.keys(source);\n for (let i = 0; i < sourceKeys.length; i++) {\n const key = sourceKeys[i];\n const sourceValue = source[key];\n const targetValue = target[key];\n if (Array.isArray(sourceValue)) {\n if (Array.isArray(targetValue)) {\n target[key] = merge(targetValue, sourceValue);\n }\n else {\n target[key] = merge([], sourceValue);\n }\n }\n else if (isPlainObject(sourceValue)) {\n if (isPlainObject(targetValue)) {\n target[key] = merge(targetValue, sourceValue);\n }\n else {\n target[key] = merge({}, sourceValue);\n }\n }\n else if (targetValue === undefined || sourceValue !== undefined) {\n target[key] = sourceValue;\n }\n }\n return target;\n}\n\nexport { merge };\n","function omit(obj, keys) {\n const result = { ...obj };\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n delete result[key];\n }\n return result;\n}\n\nexport { omit };\n","import { cloneDeep } from './cloneDeep.mjs';\nimport { merge } from './merge.mjs';\n\nfunction toMerged(target, source) {\n return merge(cloneDeep(target), source);\n}\n\nexport { toMerged };\n","import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","import { customAlphabet } from 'nanoid';\nconst NUMBERS = '0123456789';\nconst LOWERCASE = 'abcdefghijklmnopqrstuvwxyz';\nconst UPPERCASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n/**\n * Use custom ID generator for characters that be easily selected\n */\nconst customNanoid = customAlphabet(`${NUMBERS}${LOWERCASE}${UPPERCASE}_`, 12);\n/**\n * Generate a random key string made up of numbers, lowercase, and uppercase letters\n * @returns A random key string\n */\nexport function randomKey(length = 12) {\n return customNanoid(length);\n}\n//# sourceMappingURL=random-key.js.map","import { z } from 'zod';\n/**\n * Regex for validating kebab case, e.g. \"my-project\".\n */\nexport const KEBAB_CASE_REGEX = /^[a-z0-9-]+$/;\n/**\n * Regex for validating pascal case, e.g. \"MyProject\".\n */\nexport const PASCAL_CASE_REGEX = /^[A-Z][a-zA-Z0-9]*$/;\n/**\n * Regex for validating camel case, e.g. \"myProject\".\n */\nexport const CAMEL_CASE_REGEX = /^[a-z][a-zA-Z0-9]*$/;\n/**\n * Regex for validating constant case, e.g. \"MY_PROJECT\".\n */\nexport const CONSTANT_CASE_REGEX = /^[A-Z][A-Z0-9_]*$/;\nexport const CASE_VALIDATORS = {\n /**\n * Zod validator for validating kebab case, e.g. \"my-project\".\n */\n KEBAB_CASE: z.string().regex(KEBAB_CASE_REGEX, {\n message: 'Must be kebab case (e.g. \"my-project\")',\n }),\n /**\n * Zod validator for validating pascal case, e.g. \"MyProject\".\n */\n PASCAL_CASE: z.string().regex(PASCAL_CASE_REGEX, {\n message: 'Must be pascal case (e.g. \"MyProject\")',\n }),\n /**\n * Zod validator for validating camel case, e.g. \"myProject\".\n */\n CAMEL_CASE: z.string().regex(CAMEL_CASE_REGEX, {\n message: 'Must be camel case (e.g. \"myProject\")',\n }),\n /**\n * Zod validator for validating constant case, e.g. \"MY_PROJECT\".\n */\n CONSTANT_CASE: z.string().regex(CONSTANT_CASE_REGEX, {\n message: 'Must be constant case (e.g. \"MY_PROJECT\")',\n }),\n};\n//# sourceMappingURL=case-validators.js.map","export function createInitializedPluginSpec(spec, implementation) {\n return { spec, implementation };\n}\nexport function createPluginSpec(name, options) {\n const { platforms, defaultInitializer } = options ?? {};\n return {\n type: 'plugin-spec',\n name,\n platforms: platforms && (Array.isArray(platforms) ? platforms : [platforms]),\n isOptional: false,\n optional() {\n return { ...this, isOptional: true };\n },\n defaultInitializer,\n };\n}\n//# sourceMappingURL=types.js.map","import { randomKey } from '@baseplate-dev/utils';\n/**\n * Definition of an entity type.\n */\nexport class DefinitionEntityType {\n /**\n * Creates a new entity type.\n *\n * @param name - The name of the entity type.\n * @param prefix - The prefix of the entity type to use in the ID, defaults to the name.\n * @param parentType - The type of the parent entity if any\n */\n constructor(name, prefix, parentType) {\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: name\n });\n Object.defineProperty(this, \"parentType\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: parentType\n });\n Object.defineProperty(this, \"prefix\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.prefix = prefix ?? name.split('/').pop() ?? name;\n }\n /**\n * Generates a new ID for the entity type.\n *\n * @returns The new ID.\n */\n generateNewId() {\n return `${this.prefix}:${randomKey()}`;\n }\n idFromKey(key) {\n if (!key) {\n return undefined;\n }\n return `${this.prefix}:${key}`;\n }\n keyFromId(id) {\n return id.split(':')[1];\n }\n isId(id) {\n return id.startsWith(`${this.prefix}:`);\n }\n}\nexport function createEntityType(name, options) {\n const { parentType, prefix } = options ?? {};\n return new DefinitionEntityType(name, prefix, parentType);\n}\n//# sourceMappingURL=types.js.map","export class DefinitionReferenceMarker {\n constructor(value, reference) {\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n Object.defineProperty(this, \"reference\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: reference\n });\n }\n toString() {\n return this.value ?? '';\n }\n}\nexport const REF_ANNOTATIONS_MARKER_SYMBOL = Symbol('refAnnotationsMarker');\n//# sourceMappingURL=markers.js.map","import { z } from 'zod';\nimport { DefinitionReferenceMarker, REF_ANNOTATIONS_MARKER_SYMBOL, } from './markers.js';\nexport function extendParserContextWithRefs({ transformReferences, }) {\n function withRef(reference) {\n return z.string().transform((value) => {\n if (transformReferences && value) {\n return new DefinitionReferenceMarker(value, reference);\n }\n return value;\n });\n }\n function withEnt(schema, entity) {\n if (!('id' in schema.shape)) {\n throw new Error(`Entity must have an id field. Entity type: ${entity.type.name}. Schema keys: ${Object.keys(schema.shape).join(', ')}`);\n }\n return schema.transform((value) => {\n // Check if the id is valid\n if (!('id' in value) || !entity.type.isId(value.id)) {\n throw new Error(`Invalid id for entity ${entity.type.name}. Id: ${value.id}`);\n }\n if (transformReferences) {\n const existingAnnotations = REF_ANNOTATIONS_MARKER_SYMBOL in value\n ? value[REF_ANNOTATIONS_MARKER_SYMBOL]\n : undefined;\n return {\n ...value,\n [REF_ANNOTATIONS_MARKER_SYMBOL]: {\n entities: [...(existingAnnotations?.entities ?? []), entity],\n references: existingAnnotations?.references ?? [],\n contextPaths: existingAnnotations?.contextPaths ?? [],\n },\n };\n }\n return value;\n });\n }\n function withRefBuilder(schema, builder) {\n return schema.transform((value) => {\n if (!value) {\n return value;\n }\n if (typeof value !== 'object') {\n throw new TypeError(`refBuilder requires an object, but got ${typeof value}`);\n }\n const existingAnnotations = REF_ANNOTATIONS_MARKER_SYMBOL in value\n ? value[REF_ANNOTATIONS_MARKER_SYMBOL]\n : undefined;\n const entities = existingAnnotations?.entities ?? [];\n const references = existingAnnotations?.references ?? [];\n const contextPaths = existingAnnotations?.contextPaths ?? [];\n const refBuilder = {\n addReference: (reference) => {\n references.push(reference);\n },\n addEntity: (entity) => {\n entities.push(entity);\n },\n addPathToContext: (path, type, context) => {\n contextPaths.push({ path, type, context });\n },\n };\n builder?.(refBuilder, value);\n if (transformReferences) {\n return {\n ...value,\n [REF_ANNOTATIONS_MARKER_SYMBOL]: {\n entities,\n references,\n contextPaths,\n },\n };\n }\n return value;\n });\n }\n return {\n withRef,\n withEnt,\n withRefBuilder,\n };\n}\n//# sourceMappingURL=extend-parser-context-with-refs.js.map","import { z } from 'zod';\nfunction isEmpty(value) {\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.values(value).every((val) => val === undefined);\n }\n return value === false || value === '';\n}\n/**\n * Extends the parser context with default value handling functionality.\n *\n * @param options - The schema creator options containing the defaultMode\n * @returns An object containing the withDefault method\n */\nexport function extendParserContextWithDefaults(options) {\n const mode = options.defaultMode ?? 'populate';\n return {\n withDefault: function withDefault(schema, defaultValue) {\n // Auto-add .optional() to the schema\n const optionalSchema = schema.optional();\n switch (mode) {\n case 'populate': {\n // Use preprocess to inject defaults before validation\n return z.preprocess((value) => {\n if (value === undefined) {\n return defaultValue;\n }\n return value;\n }, optionalSchema);\n }\n case 'strip': {\n // Use transform to remove values matching defaults after validation\n return optionalSchema.transform((value) => {\n if (isEmpty(value)) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- it's typed to a generic\n return value;\n });\n }\n case 'preserve': {\n // Return schema with .optional() added\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- it's typed to a generic\n return optionalSchema.transform((x) => x);\n }\n }\n },\n };\n}\n//# sourceMappingURL=extend-parser-context-with-defaults.js.map","import { extendParserContextWithRefs } from '#src/references/extend-parser-context-with-refs.js';\nimport { extendParserContextWithDefaults } from './extend-parser-context-with-defaults.js';\nexport function createDefinitionSchemaParserContext(options) {\n return {\n ...options,\n ...extendParserContextWithRefs(options),\n ...extendParserContextWithDefaults(options),\n };\n}\nexport function definitionSchema(creator) {\n return (context) => creator(context);\n}\n//# sourceMappingURL=schema-creator.js.map","function isDeepKey(key) {\n switch (typeof key) {\n case 'number':\n case 'symbol': {\n return false;\n }\n case 'string': {\n return key.includes('.') || key.includes('[') || key.includes(']');\n }\n }\n}\n\nexport { isDeepKey };\n","function toKey(value) {\n if (Object.is(value, -0)) {\n return '-0';\n }\n return value.toString();\n}\n\nexport { toKey };\n","function toPath(deepKey) {\n const result = [];\n const length = deepKey.length;\n if (length === 0) {\n return result;\n }\n let index = 0;\n let key = '';\n let quoteChar = '';\n let bracket = false;\n if (deepKey.charCodeAt(0) === 46) {\n result.push('');\n index++;\n }\n while (index < length) {\n const char = deepKey[index];\n if (quoteChar) {\n if (char === '\\\\' && index + 1 < length) {\n index++;\n key += deepKey[index];\n }\n else if (char === quoteChar) {\n quoteChar = '';\n }\n else {\n key += char;\n }\n }\n else if (bracket) {\n if (char === '\"' || char === \"'\") {\n quoteChar = char;\n }\n else if (char === ']') {\n bracket = false;\n result.push(key);\n key = '';\n }\n else {\n key += char;\n }\n }\n else {\n if (char === '[') {\n bracket = true;\n if (key) {\n result.push(key);\n key = '';\n }\n }\n else if (char === '.') {\n if (key) {\n result.push(key);\n key = '';\n }\n }\n else {\n key += char;\n }\n }\n index++;\n }\n if (key) {\n result.push(key);\n }\n return result;\n}\n\nexport { toPath };\n","import { isDeepKey } from '../_internal/isDeepKey.mjs';\nimport { toKey } from '../_internal/toKey.mjs';\nimport { toPath } from '../util/toPath.mjs';\n\nfunction get(object, path, defaultValue) {\n if (object == null) {\n return defaultValue;\n }\n switch (typeof path) {\n case 'string': {\n const result = object[path];\n if (result === undefined) {\n if (isDeepKey(path)) {\n return get(object, toPath(path), defaultValue);\n }\n else {\n return defaultValue;\n }\n }\n return result;\n }\n case 'number':\n case 'symbol': {\n if (typeof path === 'number') {\n path = toKey(path);\n }\n const result = object[path];\n if (result === undefined) {\n return defaultValue;\n }\n return result;\n }\n default: {\n if (Array.isArray(path)) {\n return getWithPath(object, path, defaultValue);\n }\n if (Object.is(path?.valueOf(), -0)) {\n path = '-0';\n }\n else {\n path = String(path);\n }\n const result = object[path];\n if (result === undefined) {\n return defaultValue;\n }\n return result;\n }\n }\n}\nfunction getWithPath(object, path, defaultValue) {\n if (path.length === 0) {\n return defaultValue;\n }\n let current = object;\n for (let index = 0; index < path.length; index++) {\n if (current == null) {\n return defaultValue;\n }\n current = current[path[index]];\n }\n if (current === undefined) {\n return defaultValue;\n }\n return current;\n}\n\nexport { get };\n","function isObject(value) {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n}\n\nexport { isObject };\n","import { isObject } from './isObject.mjs';\nimport { isPrimitive } from '../../predicate/isPrimitive.mjs';\nimport { eq } from '../util/eq.mjs';\n\nfunction isMatch(target, source) {\n if (source === target) {\n return true;\n }\n switch (typeof source) {\n case 'object': {\n if (source == null) {\n return true;\n }\n const keys = Object.keys(source);\n if (target == null) {\n return keys.length === 0;\n }\n if (Array.isArray(source)) {\n return isArrayMatch(target, source);\n }\n if (source instanceof Map) {\n return isMapMatch(target, source);\n }\n if (source instanceof Set) {\n return isSetMatch(target, source);\n }\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!isPrimitive(target) && !(key in target)) {\n return false;\n }\n if (source[key] === undefined && target[key] !== undefined) {\n return false;\n }\n if (source[key] === null && target[key] !== null) {\n return false;\n }\n if (!isMatch(target[key], source[key])) {\n return false;\n }\n }\n return true;\n }\n case 'function': {\n if (Object.keys(source).length > 0) {\n return isMatch(target, { ...source });\n }\n return false;\n }\n default: {\n if (!isObject(target)) {\n return eq(target, source);\n }\n return !source;\n }\n }\n}\nfunction isMapMatch(target, source) {\n if (source.size === 0) {\n return true;\n }\n if (!(target instanceof Map)) {\n return false;\n }\n for (const [key, value] of source.entries()) {\n if (!isMatch(target.get(key), value)) {\n return false;\n }\n }\n return true;\n}\nfunction isArrayMatch(target, source) {\n if (source.length === 0) {\n return true;\n }\n if (!Array.isArray(target)) {\n return false;\n }\n const countedIndex = new Set();\n for (let i = 0; i < source.length; i++) {\n const sourceItem = source[i];\n const index = target.findIndex((targetItem, index) => {\n return isMatch(targetItem, sourceItem) && !countedIndex.has(index);\n });\n if (index === -1) {\n return false;\n }\n countedIndex.add(index);\n }\n return true;\n}\nfunction isSetMatch(target, source) {\n if (source.size === 0) {\n return true;\n }\n if (!(target instanceof Set)) {\n return false;\n }\n return isArrayMatch([...target], [...source]);\n}\n\nexport { isArrayMatch, isMapMatch, isMatch, isSetMatch };\n","const IS_UNSIGNED_INTEGER = /^(?:0|[1-9]\\d*)$/;\nfunction isIndex(value, length = Number.MAX_SAFE_INTEGER) {\n switch (typeof value) {\n case 'number': {\n return Number.isInteger(value) && value >= 0 && value < length;\n }\n case 'symbol': {\n return false;\n }\n case 'string': {\n return IS_UNSIGNED_INTEGER.test(value);\n }\n }\n}\n\nexport { isIndex };\n","import { isIndex } from '../_internal/isIndex.mjs';\nimport { toPath } from '../util/toPath.mjs';\n\nfunction set(obj, path, value) {\n const resolvedPath = Array.isArray(path) ? path : typeof path === 'string' ? toPath(path) : [path];\n let current = obj;\n for (let i = 0; i < resolvedPath.length - 1; i++) {\n const key = resolvedPath[i];\n const nextKey = resolvedPath[i + 1];\n if (current[key] == null) {\n current[key] = isIndex(nextKey) ? [] : {};\n }\n current = current[key];\n }\n const lastKey = resolvedPath[resolvedPath.length - 1];\n current[lastKey] = value;\n return obj;\n}\n\nexport { set };\n","import { CASE_VALIDATORS } from '@baseplate-dev/utils';\nimport { z } from 'zod';\nimport { createEntityType } from '#src/references/types.js';\nimport { definitionSchema } from '#src/schema/creator/schema-creator.js';\nexport const featureEntityType = createEntityType('feature');\nexport const featureNameSchema = CASE_VALIDATORS.KEBAB_CASE;\nexport const createFeatureSchema = definitionSchema((ctx) => ctx.withEnt(z.object({\n id: z.string(),\n name: z\n .string()\n .min(1)\n .refine((name) => name\n .split('/')\n .every((part) => featureNameSchema.safeParse(part).success), {\n message: 'Feature name must be lowercase and contain only letters, numbers, and dashes',\n }),\n parentRef: ctx\n .withRef({\n type: featureEntityType,\n onDelete: 'DELETE_PARENT',\n })\n .optional(),\n}), { type: featureEntityType }));\nexport const createFeaturesSchema = definitionSchema((ctx) => z.array(createFeatureSchema(ctx)).default([]));\n//# sourceMappingURL=feature.js.map","import { createEntityType } from '#src/references/index.js';\nexport const modelEntityType = createEntityType('model');\nexport const modelScalarFieldEntityType = createEntityType('model-scalar-field', {\n parentType: modelEntityType,\n});\nexport const modelLocalRelationEntityType = createEntityType('model-local-relation', { parentType: modelEntityType });\nexport const modelForeignRelationEntityType = createEntityType('model-foreign-relation', { parentType: modelEntityType });\nexport const modelUniqueConstraintEntityType = createEntityType('model-unique-constraint', { parentType: modelEntityType });\nexport const modelTransformerEntityType = createEntityType('model-transformer', { parentType: modelEntityType });\nexport const modelEnumEntityType = createEntityType('model-enum');\nexport const modelEnumValueEntityType = createEntityType('model-enum-value', {\n parentType: modelEnumEntityType,\n});\n//# sourceMappingURL=types.js.map","import { featureEntityType, featureNameSchema } from '#src/schema/index.js';\nfunction getRootFeatures(projectDefinition) {\n return projectDefinition.features.filter((f) => !f.parentRef);\n}\nfunction getFeatureById(projectDefinition, featureId) {\n return projectDefinition.features.find((f) => f.id === featureId);\n}\nfunction getFeatureByIdOrThrow(projectDefinition, featureId) {\n const feature = getFeatureById(projectDefinition, featureId);\n if (!feature) {\n throw new Error(`Could not find feature with ID ${featureId}`);\n }\n return feature;\n}\nfunction getFeatureChildren(projectDefinition, featureId) {\n return projectDefinition.features.filter((f) => f.parentRef === featureId);\n}\nfunction getFeatureName(featureConfig) {\n return featureConfig.name.split('/').pop() ?? '';\n}\nfunction getFeatureNameById(projectDefinition, featureId) {\n const feature = getFeatureByIdOrThrow(projectDefinition, featureId);\n return getFeatureName(feature);\n}\nfunction getFeaturePathById(projectDefinition, featureId) {\n const feature = getFeatureByIdOrThrow(projectDefinition, featureId);\n return feature.name;\n}\nfunction validateFeatureName(name) {\n const nameParts = name.split('/');\n return nameParts.every((part) => featureNameSchema.safeParse(part).success);\n}\nfunction ensureFeatureByNameRecursively(projectDefinition, nameOrId) {\n if (featureEntityType.isId(nameOrId)) {\n return nameOrId;\n }\n const nameParts = nameOrId.split('/');\n let lastName = '';\n let parentRef = undefined;\n for (const part of nameParts) {\n const feature = projectDefinition.features.find((f) => f.name === part && f.parentRef === parentRef);\n const name = [lastName, part].filter(Boolean).join('/');\n if (feature) {\n parentRef = feature.id;\n }\n else {\n const newFeature = {\n id: featureEntityType.generateNewId(),\n name,\n parentRef,\n };\n projectDefinition.features.push(newFeature);\n parentRef = newFeature.id;\n }\n lastName = name;\n }\n if (!parentRef) {\n throw new Error('Failed to create feature');\n }\n return parentRef;\n}\nfunction getFeatureByName(projectDefinition, name) {\n return projectDefinition.features.find((f) => f.name === name);\n}\nfunction getFeatureIdByNameOrDefault(projectDefinition, name) {\n return getFeatureByName(projectDefinition, name)?.id ?? name;\n}\nexport const FeatureUtils = {\n getRootFeatures,\n getFeatureById,\n getFeatureByIdOrThrow,\n getFeatureChildren,\n getFeatureName,\n getFeatureNameById,\n getFeaturePathById,\n validateFeatureName,\n ensureFeatureByNameRecursively,\n getFeatureByName,\n getFeatureIdByNameOrDefault,\n};\n//# sourceMappingURL=feature-utils.js.map","import { PASCAL_CASE_REGEX } from '@baseplate-dev/utils';\nfunction byId(projectDefinition, id) {\n return projectDefinition.models.find((m) => m.id === id);\n}\nfunction byIdOrThrow(projectDefinition, id) {\n const model = byId(projectDefinition, id);\n if (!model) {\n throw new Error(`Could not find model with ID ${id}`);\n }\n return model;\n}\nfunction getScalarFieldById(model, id) {\n const field = model.model.fields.find((f) => f.id === id);\n if (!field) {\n throw new Error(`Could not find field with ID ${id}`);\n }\n return field;\n}\nfunction getRelationsToModel(projectDefinition, modelId) {\n return projectDefinition.models.flatMap((m) => m.model.relations\n ?.filter((r) => r.modelRef === modelId)\n .map((r) => ({ model: m, relation: r })) ?? []);\n}\nfunction getModelsForFeature(projectDefinition, featureId) {\n return projectDefinition.models.filter((m) => m.featureRef === featureId);\n}\nfunction getModelIdFields(model) {\n return model.model.primaryKeyFieldRefs;\n}\nfunction hasService(model) {\n return (!!model.service.create.enabled ||\n !!model.service.update.enabled ||\n !!model.service.delete.enabled ||\n model.service.transformers.length > 0);\n}\nfunction validateModelName(name) {\n return PASCAL_CASE_REGEX.test(name);\n}\n/**\n * Returns the ID of a model by name, or the name if no model is found.\n * @param projectDefinition - The project definition.\n * @param name - The name of the model.\n * @returns The ID of the model, or the name if no model is found.\n */\nfunction getModelIdByNameOrDefault(projectDefinition, name) {\n return projectDefinition.models.find((m) => m.name === name)?.id ?? name;\n}\nexport const ModelUtils = {\n byId,\n byIdOrThrow,\n getScalarFieldById,\n getRelationsToModel,\n getModelsForFeature,\n getModelIdFields,\n hasService,\n validateModelName,\n getModelIdByNameOrDefault,\n};\n//# sourceMappingURL=model-utils.js.map","/**\n * Allows diffing of arbitrary JSON objects.\n */\nimport { cloneDeep, mapValues, omit, toMerged } from 'es-toolkit';\nimport { get, isMatch, set } from 'es-toolkit/compat';\nclass DefinitionDiffField {\n constructor(\n /**\n * The name of the field to be presented to the user.\n */\n name) {\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: name\n });\n }\n}\n/**\n * A field that is an array of objects with a unique key.\n */\nexport class DefinitionDiffKeyedArrayField extends DefinitionDiffField {\n constructor(name, getKey, options = {}) {\n super(name);\n Object.defineProperty(this, \"getKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: getKey\n });\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: options\n });\n this.getKey = getKey;\n }\n diff(current, desired) {\n const currentValue = current ?? [];\n const desiredValue = desired ?? [];\n if (!Array.isArray(currentValue) || !Array.isArray(desiredValue)) {\n throw new TypeError('Current and desired must be arrays');\n }\n const ops = [];\n const { allowRemove, ignoreFields = ['id'] } = this.options;\n const currentByKey = new Map(currentValue.map((item) => [this.getKey(item), item]));\n const desiredByKey = new Map(desiredValue.map((item) => [this.getKey(item), item]));\n for (const [key, desiredItem] of desiredByKey) {\n const currentItem = currentByKey.get(key);\n if (!currentItem) {\n ops.push({ type: 'add', key, item: desiredItem });\n continue;\n }\n if (!isMatch(omit(currentItem, ignoreFields), omit(desiredItem, ignoreFields))) {\n ops.push({ type: 'update', key, item: desiredItem });\n }\n }\n if (allowRemove) {\n for (const [key, currentItem] of currentByKey) {\n if (!desiredByKey.has(key)) {\n ops.push({ type: 'remove', key, item: currentItem });\n }\n }\n }\n return ops;\n }\n apply(current, diff) {\n const patch = diff;\n const currentValue = current ?? [];\n if (!Array.isArray(currentValue)) {\n throw new TypeError('Current must be array');\n }\n const items = [...currentValue];\n for (const { type, key, item } of patch) {\n const index = items.findIndex((i) => this.getKey(i) === key);\n switch (type) {\n case 'add': {\n items.push(item);\n break;\n }\n case 'update': {\n if (index === -1) {\n throw new Error(`Cannot apply patch. Item with key \"${key}\" not found.`);\n }\n // Preserve existing id if present.\n items[index] = toMerged(items[index], item);\n break;\n }\n case 'remove': {\n if (index !== -1) {\n items.splice(index, 1);\n }\n break;\n }\n }\n }\n return items;\n }\n getActionVerb(isNew) {\n return isNew ? 'created' : 'added or updated';\n }\n}\n/**\n * A field that is a replacement for the entire object or array.\n */\nexport class DefinitionDiffReplacementField extends DefinitionDiffField {\n diff(current, desired) {\n if (desired === undefined) {\n return [];\n }\n if (!isMatch(current, desired)) {\n return [{ type: 'update', key: '*', item: desired }];\n }\n return [];\n }\n apply(current, diff) {\n if (diff.length === 0)\n return current;\n return diff[0].item;\n }\n getActionVerb(isNew) {\n return isNew ? 'set' : 'replaced';\n }\n}\n/**\n * A field that ensures an array contains certain values.\n * This field type only adds items, never removes them.\n */\nexport class DefinitionDiffArrayIncludesField extends DefinitionDiffField {\n constructor(name, getKey) {\n super(name);\n Object.defineProperty(this, \"getKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: getKey\n });\n }\n diff(current, desired) {\n const currentValue = current ?? [];\n const desiredValue = desired ?? [];\n if (!Array.isArray(currentValue) || !Array.isArray(desiredValue)) {\n throw new TypeError('Current and desired must be arrays');\n }\n const ops = [];\n const currentSet = new Set(this.getKey ? currentValue.map(this.getKey) : currentValue);\n for (const item of desiredValue) {\n const key = this.getKey ? this.getKey(item) : String(item);\n if (!currentSet.has(key)) {\n ops.push({ type: 'add', key, item });\n }\n }\n return ops;\n }\n apply(current, diff) {\n const currentValue = (current ?? []);\n if (!Array.isArray(currentValue)) {\n throw new TypeError('Current must be array');\n }\n const items = [...currentValue];\n for (const { type, item } of diff) {\n if (type === 'add') {\n items.push(item);\n }\n }\n return items;\n }\n getActionVerb(isNew) {\n return isNew ? 'created' : 'added';\n }\n}\nexport function createDefinitionDiffConfig(config) {\n return config;\n}\n/**\n * Creates a diff between two objects.\n */\nexport function createDefinitionDiff(current, desired, configuration) {\n const ops = mapValues(configuration, (field, key) => {\n if (!field)\n return [];\n return field.diff(get(current, key), get(desired, key));\n });\n if (Object.values(ops).every((ops) => ops.length === 0)) {\n return undefined;\n }\n return ops;\n}\n/**\n * Applies a diff to an object.\n */\nexport function applyDefinitionDiff(current, diff, configuration) {\n const clonedCurrent = cloneDeep(current);\n for (const [key, ops] of Object.entries(diff)) {\n if (!ops)\n continue;\n const field = configuration[key];\n const currentValue = get(clonedCurrent, key);\n set(clonedCurrent, key, field.apply(currentValue, ops));\n }\n return clonedCurrent;\n}\n//# sourceMappingURL=definition-diff.js.map","import { mapValues } from 'es-toolkit';\nimport { ModelUtils } from '#src/definition/index.js';\nimport { modelEntityType, modelForeignRelationEntityType, modelLocalRelationEntityType, modelScalarFieldEntityType, modelUniqueConstraintEntityType, } from '#src/schema/index.js';\nimport { applyDefinitionDiff, createDefinitionDiff, createDefinitionDiffConfig, DefinitionDiffArrayIncludesField, DefinitionDiffKeyedArrayField, DefinitionDiffReplacementField, } from '#src/utils/definition-diff/definition-diff.js';\n/**\n * Computes a unique key for a unique constraint by sorting its field refs.\n *\n * @param constraint - Unique constraint input.\n * @returns A key string.\n */\nfunction getUniqueConstraintKey(constraint) {\n const fields = constraint.fields.map((f) => f.fieldRef).sort();\n return fields.join('|');\n}\nexport const modelMergerDefinitionDiffConfig = createDefinitionDiffConfig({\n 'model.fields': new DefinitionDiffKeyedArrayField('fields', (f) => f.name),\n 'model.relations': new DefinitionDiffKeyedArrayField('relations', (r) => r.name),\n 'model.uniqueConstraints': new DefinitionDiffKeyedArrayField('unique constraints', (c) => getUniqueConstraintKey(c)),\n 'model.primaryKeyFieldRefs': new DefinitionDiffReplacementField('primary key fields'),\n 'graphql.objectType.enabled': new DefinitionDiffReplacementField('GraphQL object type enabled'),\n 'graphql.objectType.fields': new DefinitionDiffArrayIncludesField('GraphQL object type fields'),\n 'graphql.objectType.localRelations': new DefinitionDiffArrayIncludesField('GraphQL object type local relations'),\n 'graphql.objectType.foreignRelations': new DefinitionDiffArrayIncludesField('GraphQL object type foreign relations'),\n});\n/**\n * Serializes a model merger model input such that all IDs are replaced with\n * names.\n *\n * @param input - The model merger model input.\n * @param definitionContainer - The definition container.\n * @returns The serialized model merger model input.\n */\nfunction serializeModelMergerModelInput(input, definitionContainer, siblingModels) {\n const siblingModelFieldIdMap = new Map([\n ...input.model.fields.map((f) => [f.id, f.name]),\n ...siblingModels.flatMap((m) => m.model.fields.map((f) => [f.id, f.name])),\n ]);\n const siblingModelRelationIdMap = new Map([\n ...(input.model.relations ?? []).map((r) => [r.id, r.name]),\n ...siblingModels.flatMap((m) => (m.model.relations ?? []).map((r) => [r.id, r.name])),\n ...(input.model.relations ?? []).map((r) => [r.foreignId, r.foreignRelationName]),\n ...siblingModels.flatMap((m) => (m.model.relations ?? []).map((r) => [r.foreignId, r.foreignRelationName])),\n ]);\n const fieldNameFromId = (id) => siblingModelFieldIdMap.get(id) ?? definitionContainer.nameFromId(id);\n const relationNameFromId = (id) => siblingModelRelationIdMap.get(id) ?? definitionContainer.nameFromId(id);\n return {\n ...input,\n model: {\n ...input.model,\n relations: input.model.relations?.map((r) => ({\n ...r,\n references: r.references.map((reference) => ({\n ...reference,\n localRef: fieldNameFromId(reference.localRef),\n foreignRef: fieldNameFromId(reference.foreignRef),\n })),\n })),\n uniqueConstraints: input.model.uniqueConstraints?.map((c) => ({\n ...c,\n fields: c.fields.map((f) => ({\n ...f,\n fieldRef: fieldNameFromId(f.fieldRef),\n })),\n })),\n primaryKeyFieldRefs: input.model.primaryKeyFieldRefs.map(fieldNameFromId),\n },\n graphql: {\n ...input.graphql,\n objectType: {\n ...input.graphql?.objectType,\n fields: input.graphql?.objectType?.fields?.map(fieldNameFromId) ?? [],\n localRelations: input.graphql?.objectType?.localRelations?.map(relationNameFromId) ??\n [],\n foreignRelations: input.graphql?.objectType?.foreignRelations?.map(relationNameFromId) ?? [],\n },\n },\n };\n}\n/**\n * Attaches IDs to the model merger model input.\n *\n * @param input - The model merger model input.\n * @returns The model merger model input with IDs attached.\n */\nfunction attachIdsToModelMergerModelInput(input) {\n return {\n ...input,\n model: {\n ...input.model,\n fields: input.model.fields.map((f) => ({\n ...f,\n id: f.id ?? modelScalarFieldEntityType.generateNewId(),\n })),\n relations: input.model.relations?.map((r) => ({\n ...r,\n id: r.id ?? modelLocalRelationEntityType.generateNewId(),\n foreignId: r.foreignId ?? modelForeignRelationEntityType.generateNewId(),\n })),\n uniqueConstraints: input.model.uniqueConstraints?.map((c) => ({\n ...c,\n id: c.id ?? modelUniqueConstraintEntityType.generateNewId(),\n })),\n },\n };\n}\n/**\n * Deserializes a model merger model input converting all names to IDs.\n *\n * @param input - The model merger model input.\n * @param resolveForeignFieldRef - A function that resolves the foreign field ref.\n * @returns The deserialized model merger model input.\n */\nfunction deserializeModelMergerModelInput(input, resolveForeignFieldRef, resolveForeignRelationRef) {\n const inputWithIds = attachIdsToModelMergerModelInput(input);\n const resolveLocalFieldName = (name) => {\n const field = inputWithIds.model.fields.find((f) => f.name === name);\n if (!field) {\n throw new Error(`Field ${name} not found`);\n }\n return field.id;\n };\n const resolveLocalRelationName = (name) => {\n const relation = inputWithIds.model.relations?.find((r) => r.name === name);\n if (!relation) {\n throw new Error(`Relation ${name} not found`);\n }\n return relation.id;\n };\n return {\n ...inputWithIds,\n model: {\n ...inputWithIds.model,\n relations: inputWithIds.model.relations?.map((relation) => ({\n ...relation,\n references: relation.references.map((reference) => ({\n ...reference,\n localRef: resolveLocalFieldName(reference.localRef),\n foreignRef: resolveForeignFieldRef(relation.modelRef, reference.foreignRef),\n })),\n })),\n uniqueConstraints: inputWithIds.model.uniqueConstraints?.map((constraint) => ({\n ...constraint,\n fields: constraint.fields.map((field) => ({\n ...field,\n fieldRef: resolveLocalFieldName(field.fieldRef),\n })),\n })),\n primaryKeyFieldRefs: inputWithIds.model.primaryKeyFieldRefs.map((fieldRef) => resolveLocalFieldName(fieldRef)),\n },\n graphql: {\n ...inputWithIds.graphql,\n objectType: {\n ...inputWithIds.graphql?.objectType,\n fields: inputWithIds.graphql?.objectType?.fields?.map((fieldRef) => resolveLocalFieldName(fieldRef)) ?? [],\n localRelations: inputWithIds.graphql?.objectType?.localRelations?.map((relationRef) => resolveLocalRelationName(relationRef)) ?? [],\n foreignRelations: inputWithIds.graphql?.objectType?.foreignRelations?.map((relationRef) => resolveForeignRelationRef(relationRef)) ?? [],\n },\n },\n };\n}\n/**\n * Creates a new blank model config input from a name and feature ref.\n *\n * @param name - The name of the model.\n * @param featureRef - The feature ref of the model.\n * @returns The new model config input.\n */\nfunction createNewModelConfigInput(name, featureRef) {\n return {\n id: modelEntityType.generateNewId(),\n name,\n featureRef,\n model: {\n fields: [],\n primaryKeyFieldRefs: [],\n },\n };\n}\n/**\n * Diff the model definition.\n *\n * @param current - The current model definition or a new model to be created.\n * @param desired - The desired model definition.\n * @param definitionContainer - Project definition container.\n * @param options - Diff options.\n * @returns A diff output or undefined if there are no differences.\n */\nexport function createModelMergerResult(current, desired, definitionContainer, { siblingModels = [] } = {}) {\n const currentModel = current ?? createNewModelConfigInput(desired.name, desired.featureRef);\n // resolves all the names of the current model config input\n const resolvedCurrent = serializeModelMergerModelInput(currentModel, definitionContainer, siblingModels);\n const diff = createDefinitionDiff(resolvedCurrent, desired, modelMergerDefinitionDiffConfig);\n if (!diff) {\n return undefined;\n }\n return {\n isNewModel: !current,\n id: currentModel.id,\n name: currentModel.name,\n featureRef: currentModel.featureRef,\n changes: diff,\n };\n}\nexport function doesModelMergerResultsHaveChanges(results) {\n return Object.values(results).some((result) => result?.changes);\n}\n/**\n * Creates a model merger result for a set of models.\n *\n * @param current - A map of model IDs\n * @param desired - The desired model definition.\n * @param definitionContainer - Project definition container.\n * @param options - Diff options.\n * @returns A model merger result for a set of models.\n */\nexport function createModelMergerResults(current, desired, definitionContainer, { siblingModels = [] } = {}) {\n return mapValues(desired, (desired, key) => createModelMergerResult(current[key] && modelEntityType.isId(current[key])\n ? ModelUtils.byIdOrThrow(definitionContainer.definition, current[key])\n : undefined, desired, definitionContainer, {\n siblingModels,\n }));\n}\nexport function applyModelMergerDiff(model, diff, definitionContainer, siblingModels = []) {\n const resolvedCurrent = serializeModelMergerModelInput(model, definitionContainer, siblingModels);\n const patchedCurrent = applyDefinitionDiff(resolvedCurrent, diff, modelMergerDefinitionDiffConfig);\n return {\n ...model,\n ...deserializeModelMergerModelInput(patchedCurrent, (modelId, fieldName) => {\n const siblingModel = siblingModels.find((m) => m.id === modelId);\n if (siblingModel) {\n const field = siblingModel.model.fields.find((f) => f.name === fieldName);\n if (!field) {\n throw new Error(`Field ${fieldName} not found in sibling model ${modelId}`);\n }\n return field.id;\n }\n const model = ModelUtils.byIdOrThrow(definitionContainer.definition, modelId);\n const field = model.model.fields.find((f) => f.name === fieldName);\n if (!field) {\n throw new Error(`Field ${fieldName} not found in model ${model.name}`);\n }\n return field.id;\n }, (relationName) => {\n // Search sibling model first\n let relationId;\n for (const siblingModel of siblingModels) {\n const relation = siblingModel.model.relations?.find((r) => r.foreignRelationName === relationName);\n if (relation) {\n relationId = relation.foreignId;\n break;\n }\n }\n if (relationId) {\n return relationId;\n }\n const relations = ModelUtils.getRelationsToModel(definitionContainer.definition, model.id);\n const relation = relations.find((r) => r.relation.foreignRelationName === relationName &&\n r.relation.modelRef === model.id);\n if (!relation) {\n throw new Error(`Relation ${relationName} not found in model ${model.name}`);\n }\n return relation.relation.foreignId;\n }),\n };\n}\nexport function applyModelMergerResultInPlace(draftConfig, result, definitionContainer, { siblingModels = [] } = {}) {\n const model = result.isNewModel\n ? createNewModelConfigInput(result.name, result.featureRef)\n : ModelUtils.byIdOrThrow(definitionContainer.definition, result.id);\n const newModel = applyModelMergerDiff(model, result.changes, definitionContainer, siblingModels);\n if (result.isNewModel) {\n draftConfig.models.push(newModel);\n }\n else {\n const index = draftConfig.models.findIndex((m) => m.id === result.id);\n if (index === -1) {\n throw new Error(`Model ${result.id} not found`);\n }\n draftConfig.models[index] = newModel;\n }\n return newModel.id;\n}\nexport function createAndApplyModelMergerResults(draftConfig, current, desired, definitionContainer, { siblingModels = [] } = {}) {\n const results = createModelMergerResults(current, desired, definitionContainer, { siblingModels });\n return mapValues(results, (result, key) => result\n ? applyModelMergerResultInPlace(draftConfig, result, definitionContainer, { siblingModels })\n : desired[key].name);\n}\n//# sourceMappingURL=model-merger.js.map"],"names":["isPrimitive","value","isTypedArray","x","cloneDeepWithImpl","valueToClone","keyToClone","objectToClone","stack","cloneValue","cloned","result","i","key","copyProperties","target","source","keys","getSymbols","descriptor","cloneDeep","obj","mapValues","object","getNewValue","merge","sourceKeys","sourceValue","targetValue","isPlainObject","omit","toMerged","random","bytes","customRandom","alphabet","defaultSize","getRandom","mask","step","size","id","j","customAlphabet","NUMBERS","LOWERCASE","UPPERCASE","customNanoid","randomKey","length","z","importShared","KEBAB_CASE_REGEX","PASCAL_CASE_REGEX","CAMEL_CASE_REGEX","CONSTANT_CASE_REGEX","CASE_VALIDATORS","createInitializedPluginSpec","spec","implementation","createPluginSpec","name","options","platforms","defaultInitializer","DefinitionEntityType","prefix","parentType","createEntityType","DefinitionReferenceMarker","reference","REF_ANNOTATIONS_MARKER_SYMBOL","extendParserContextWithRefs","transformReferences","withRef","withEnt","schema","entity","existingAnnotations","withRefBuilder","builder","entities","references","contextPaths","path","type","context","isEmpty","val","extendParserContextWithDefaults","mode","defaultValue","optionalSchema","createDefinitionSchemaParserContext","definitionSchema","creator","isDeepKey","toKey","toPath","deepKey","index","quoteChar","bracket","char","get","getWithPath","current","isObject","isMatch","isArrayMatch","isMapMatch","isSetMatch","eq","countedIndex","sourceItem","targetItem","IS_UNSIGNED_INTEGER","isIndex","set","resolvedPath","nextKey","lastKey","featureEntityType","featureNameSchema","createFeatureSchema","ctx","part","createFeaturesSchema","modelEntityType","modelScalarFieldEntityType","modelLocalRelationEntityType","modelForeignRelationEntityType","modelUniqueConstraintEntityType","modelTransformerEntityType","modelEnumEntityType","modelEnumValueEntityType","getRootFeatures","projectDefinition","f","getFeatureById","featureId","getFeatureByIdOrThrow","feature","getFeatureChildren","getFeatureName","featureConfig","getFeatureNameById","getFeaturePathById","validateFeatureName","ensureFeatureByNameRecursively","nameOrId","nameParts","lastName","parentRef","newFeature","getFeatureByName","getFeatureIdByNameOrDefault","FeatureUtils","byId","m","byIdOrThrow","model","getScalarFieldById","field","getRelationsToModel","modelId","r","getModelsForFeature","getModelIdFields","hasService","validateModelName","getModelIdByNameOrDefault","ModelUtils","DefinitionDiffField","DefinitionDiffKeyedArrayField","getKey","desired","currentValue","desiredValue","ops","allowRemove","ignoreFields","currentByKey","item","desiredByKey","desiredItem","currentItem","diff","patch","items","isNew","DefinitionDiffReplacementField","DefinitionDiffArrayIncludesField","currentSet","createDefinitionDiffConfig","config","createDefinitionDiff","configuration","applyDefinitionDiff","clonedCurrent","getUniqueConstraintKey","constraint","modelMergerDefinitionDiffConfig","c","serializeModelMergerModelInput","input","definitionContainer","siblingModels","siblingModelFieldIdMap","siblingModelRelationIdMap","fieldNameFromId","relationNameFromId","attachIdsToModelMergerModelInput","deserializeModelMergerModelInput","resolveForeignFieldRef","resolveForeignRelationRef","inputWithIds","resolveLocalFieldName","resolveLocalRelationName","relation","fieldRef","relationRef","createNewModelConfigInput","featureRef","createModelMergerResult","currentModel","resolvedCurrent","doesModelMergerResultsHaveChanges","results","createModelMergerResults","applyModelMergerDiff","patchedCurrent","fieldName","siblingModel","relationName","relationId","applyModelMergerResultInPlace","draftConfig","newModel","createAndApplyModelMergerResults"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,17,18,19,20,21,22,23,24]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as t}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{b as v,j as e}from"./index.esm-CyH9wtdI.js";import{c as D,s as A,l as S}from"./index-gE__lQ6b.js";import{s as k}from"./immer-xieDw-3D.js";const{appEntityType:c,baseAppSchema:N}=await t("@baseplate-dev/project-builder-lib"),{useProjectDefinition:F}=await t("@baseplate-dev/project-builder-lib/web"),{Button:d,Dialog:I,DialogContent:T,DialogDescription:B,DialogFooter:O,DialogHeader:E,DialogTitle:P,DialogTrigger:W,InputFieldController:$,SelectFieldController:H,useControlledState:M}=await t("@baseplate-dev/ui-components");function G({children:m,open:u,onOpenChange:b}){const[h,s]=M(u,b,!1),{saveDefinitionWithFeedback:g,isSavingDefinition:n}=F(),j=D(),{control:o,handleSubmit:f,reset:i}=v({resolver:A(N),defaultValues:{id:"",name:"",type:"backend"}}),x=[{label:"Backend App",value:"backend"},{label:"Web App",value:"web"},{label:"Admin App",value:"admin"}],y=f(a=>{const l=c.generateNewId();return g(r=>{const w=[...r.apps,{...a,id:l}];r.apps=k(w,[C=>C.name])},{successMessage:`Successfully created ${a.name}!`,onSuccess:()=>{s(!1),i(),j({to:`/apps/edit/${c.keyFromId(l)}`}).catch(S)}})}),p=a=>{s(a),a||i()};return e.jsxs(I,{open:h,onOpenChange:p,children:[e.jsx(W,{asChild:!0,children:m}),e.jsxs(T,{className:"sm:max-w-md",children:[e.jsxs(E,{children:[e.jsx(P,{children:"Create New App"}),e.jsx(B,{children:"Create a new application in your project. Choose the type that best fits your needs."})]}),e.jsxs("form",{onSubmit:a=>(a.stopPropagation(),y(a)),className:"space-y-4",children:[e.jsx($,{label:"Name",control:o,name:"name",placeholder:"e.g. backend, web, admin",description:"The name of the app, such as 'backend' or 'web'",autoComplete:"off"}),e.jsx(H,{label:"Type",control:o,name:"type",options:x,description:"Backend apps provide APIs, web apps are client applications, and admin apps manage data"}),e.jsxs(O,{children:[e.jsx(d,{type:"button",variant:"outline",onClick:()=>{p(!1)},children:"Cancel"}),e.jsx(d,{type:"submit",disabled:n,children:n?"Creating...":"Create App"})]})]})]})]})}export{G as N};
|
|
2
|
+
//# sourceMappingURL=new-app-dialog-Cd7rJ7i5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-app-dialog-Cd7rJ7i5.js","sources":["../../src/routes/apps/-components/new-app-dialog.tsx"],"sourcesContent":["import type { AppConfig } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\n\nimport {\n appEntityType,\n baseAppSchema,\n} from '@baseplate-dev/project-builder-lib';\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n InputFieldController,\n SelectFieldController,\n useControlledState,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useNavigate } from '@tanstack/react-router';\nimport { sortBy } from 'es-toolkit';\nimport { useForm } from 'react-hook-form';\n\nimport { logAndFormatError } from '#src/services/error-formatter.js';\n\ninterface NewAppDialogProps {\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction NewAppDialog({\n children,\n open,\n onOpenChange,\n}: NewAppDialogProps): React.JSX.Element {\n const [isOpen, setIsOpen] = useControlledState(open, onOpenChange, false);\n\n const { saveDefinitionWithFeedback, isSavingDefinition } =\n useProjectDefinition();\n const navigate = useNavigate();\n\n const { control, handleSubmit, reset } = useForm({\n resolver: zodResolver(baseAppSchema),\n defaultValues: {\n id: '',\n name: '',\n type: 'backend' as const,\n },\n });\n\n const appTypeOptions = [\n { label: 'Backend App', value: 'backend' },\n { label: 'Web App', value: 'web' },\n { label: 'Admin App', value: 'admin' },\n ];\n\n const onSubmit = handleSubmit((data) => {\n const newId = appEntityType.generateNewId();\n return saveDefinitionWithFeedback(\n (draftConfig) => {\n const newApps = [\n ...draftConfig.apps,\n {\n ...data,\n id: newId,\n },\n ];\n draftConfig.apps = sortBy(newApps, [(app) => app.name]) as AppConfig[];\n },\n {\n successMessage: `Successfully created ${data.name}!`,\n onSuccess: () => {\n setIsOpen(false);\n reset();\n navigate({\n to: `/apps/edit/${appEntityType.keyFromId(newId)}`,\n }).catch(logAndFormatError);\n },\n },\n );\n });\n\n const handleOpenChange = (newOpen: boolean): void => {\n setIsOpen(newOpen);\n if (!newOpen) {\n reset();\n }\n };\n\n return (\n <Dialog open={isOpen} onOpenChange={handleOpenChange}>\n <DialogTrigger asChild>{children}</DialogTrigger>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>Create New App</DialogTitle>\n <DialogDescription>\n Create a new application in your project. Choose the type that best\n fits your needs.\n </DialogDescription>\n </DialogHeader>\n <form\n onSubmit={(e) => {\n e.stopPropagation();\n return onSubmit(e);\n }}\n className=\"space-y-4\"\n >\n <InputFieldController\n label=\"Name\"\n control={control}\n name=\"name\"\n placeholder=\"e.g. backend, web, admin\"\n description=\"The name of the app, such as 'backend' or 'web'\"\n autoComplete=\"off\"\n />\n <SelectFieldController\n label=\"Type\"\n control={control}\n name=\"type\"\n options={appTypeOptions}\n description=\"Backend apps provide APIs, web apps are client applications, and admin apps manage data\"\n />\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n handleOpenChange(false);\n }}\n >\n Cancel\n </Button>\n <Button type=\"submit\" disabled={isSavingDefinition}>\n {isSavingDefinition ? 'Creating...' : 'Create App'}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n\nexport default NewAppDialog;\n"],"names":["appEntityType","baseAppSchema","importShared","useProjectDefinition","Button","Dialog","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogTitle","DialogTrigger","InputFieldController","SelectFieldController","useControlledState","NewAppDialog","children","open","onOpenChange","isOpen","setIsOpen","saveDefinitionWithFeedback","isSavingDefinition","navigate","useNavigate","control","handleSubmit","reset","useForm","zodResolver","appTypeOptions","onSubmit","data","newId","draftConfig","newApps","sortBy","app","logAndFormatError","handleOpenChange","newOpen","jsxs","jsx","e"],"mappings":"mNAGA,KAAA,CAAA,cAAAA,EAAA,cAAAC,CAAA,EAAA,MAAAC,EAAA,oCAAA,EAIA,CAAA,qBAAAC,CAAA,EAAA,MAAAD,EAAA,wCAAA,EACA,CAAA,OAAAE,EAAA,OAAAC,EAAA,cAAAC,EAAA,kBAAAC,EAAA,aAAAC,EAAA,aAAAC,EAAA,YAAAC,EAAA,cAAAC,EAAA,qBAAAC,EAAA,sBAAAC,EAAA,mBAAAC,CAAA,EAAA,MAAAZ,EAAA,8BAAA,EA0BA,SAASa,EAAa,CACpB,SAAAC,EACA,KAAAC,EACA,aAAAC,CACF,EAAyC,CACvC,KAAM,CAACC,EAAQC,CAAS,EAAIN,EAAmBG,EAAMC,EAAc,EAAK,EAElE,CAAE,2BAAAG,EAA4B,mBAAAC,CAAmB,EACrDnB,EAAqB,EACjBoB,EAAWC,EAAY,EAEvB,CAAE,QAAAC,EAAS,aAAAC,EAAc,MAAAC,CAAA,EAAUC,EAAQ,CAC/C,SAAUC,EAAY5B,CAAa,EACnC,cAAe,CACb,GAAI,GACJ,KAAM,GACN,KAAM,SAAA,CACR,CACD,EAEK6B,EAAiB,CACrB,CAAE,MAAO,cAAe,MAAO,SAAU,EACzC,CAAE,MAAO,UAAW,MAAO,KAAM,EACjC,CAAE,MAAO,YAAa,MAAO,OAAQ,CACvC,EAEMC,EAAWL,EAAcM,GAAS,CAChC,MAAAC,EAAQjC,EAAc,cAAc,EACnC,OAAAqB,EACJa,GAAgB,CACf,MAAMC,EAAU,CACd,GAAGD,EAAY,KACf,CACE,GAAGF,EACH,GAAIC,CAAA,CAER,EACYC,EAAA,KAAOE,EAAOD,EAAS,CAAEE,GAAQA,EAAI,IAAI,CAAC,CACxD,EACA,CACE,eAAgB,wBAAwBL,EAAK,IAAI,IACjD,UAAW,IAAM,CACfZ,EAAU,EAAK,EACTO,EAAA,EACGJ,EAAA,CACP,GAAI,cAAcvB,EAAc,UAAUiC,CAAK,CAAC,EAAA,CACjD,EAAE,MAAMK,CAAiB,CAAA,CAC5B,CAEJ,CAAA,CACD,EAEKC,EAAoBC,GAA2B,CACnDpB,EAAUoB,CAAO,EACZA,GACGb,EAAA,CAEV,EAEA,OACGc,EAAAA,KAAApC,EAAA,CAAO,KAAMc,EAAQ,aAAcoB,EAClC,SAAA,CAACG,EAAAA,IAAA/B,EAAA,CAAc,QAAO,GAAE,SAAAK,CAAS,CAAA,EACjCyB,EAAAA,KAACnC,EAAc,CAAA,UAAU,cACvB,SAAA,CAAAmC,OAAChC,EACC,CAAA,SAAA,CAAAiC,EAAAA,IAAChC,GAAY,SAAc,gBAAA,CAAA,EAC3BgC,EAAAA,IAACnC,GAAkB,SAGnB,sFAAA,CAAA,CAAA,EACF,EACAkC,EAAA,KAAC,OAAA,CACC,SAAWE,IACTA,EAAE,gBAAgB,EACXZ,EAASY,CAAC,GAEnB,UAAU,YAEV,SAAA,CAAAD,EAAA,IAAC9B,EAAA,CACC,MAAM,OACN,QAAAa,EACA,KAAK,OACL,YAAY,2BACZ,YAAY,kDACZ,aAAa,KAAA,CACf,EACAiB,EAAA,IAAC7B,EAAA,CACC,MAAM,OACN,QAAAY,EACA,KAAK,OACL,QAASK,EACT,YAAY,yFAAA,CACd,SACCtB,EACC,CAAA,SAAA,CAAAkC,EAAA,IAACtC,EAAA,CACC,KAAK,SACL,QAAQ,UACR,QAAS,IAAM,CACbmC,EAAiB,EAAK,CACxB,EACD,SAAA,QAAA,CAED,EACAG,EAAAA,IAACtC,GAAO,KAAK,SAAS,SAAUkB,EAC7B,SAAAA,EAAqB,cAAgB,YACxC,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CAAA,CACF,CACF,CAAA,CAAA,EACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as n}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{j as e}from"./index.esm-CyH9wtdI.js";import{u as h}from"./use-enum-form-DQza9C6Q.js";import{E as p}from"./enum-info-form-BjI1ArPU.js";const{useBlockBeforeContinue:x}=await n("@baseplate-dev/project-builder-lib/web"),{Button:i,Dialog:f,DialogClose:j,DialogContent:g,DialogDescription:C,DialogFooter:b,DialogHeader:D,DialogTitle:E,DialogTrigger:S,SwitchFieldController:w,useControlledState:v}=await n("@baseplate-dev/ui-components");function O({children:t,open:a,onOpenChange:r}){const[l,s]=v(a,r,!1),{onSubmit:c,form:{control:o},isSavingDefinition:u}=h({isCreate:!0,onSubmitSuccess:()=>{s(!1)}}),m=x();return e.jsxs(f,{open:l,onOpenChange:d=>{d?m({onContinue:()=>{s(!0)}}):s(!1)},children:[e.jsx(S,{asChild:!0,children:t}),e.jsxs(g,{children:[e.jsxs(D,{children:[e.jsx(E,{children:"New Enum"}),e.jsx(C,{children:"Enums are a list of values that can be used in your data models."})]}),e.jsxs("form",{onSubmit:c,className:"space-y-4",children:[e.jsx(p,{control:o}),e.jsx(w,{label:"Expose in GraphQL schema",control:o,name:"isExposed",description:"Whether to expose this enum in the GraphQL schema"}),e.jsxs(b,{children:[e.jsx(j,{asChild:!0,children:e.jsx(i,{variant:"secondary",children:"Cancel"})}),e.jsx(i,{type:"submit",disabled:u,children:"Create Enum"})]})]})]})]})}export{O as N};
|
|
2
|
+
//# sourceMappingURL=new-enum-dialog-Z3aWnnBr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-enum-dialog-Z3aWnnBr.js","sources":["../../src/routes/data/enums/-components/new-enum-dialog.tsx"],"sourcesContent":["import type React from 'react';\n\nimport { useBlockBeforeContinue } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n SwitchFieldController,\n useControlledState,\n} from '@baseplate-dev/ui-components';\n\nimport { useEnumForm } from '../-hooks/use-enum-form.js';\nimport { EnumInfoForm } from './enum-info-form.js';\n\ninterface NewEnumDialogProps {\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function NewEnumDialog({\n children,\n open,\n onOpenChange,\n}: NewEnumDialogProps): React.JSX.Element {\n const [isOpen, setIsOpen] = useControlledState(open, onOpenChange, false);\n const {\n onSubmit,\n form: { control },\n isSavingDefinition,\n } = useEnumForm({\n isCreate: true,\n onSubmitSuccess: () => {\n setIsOpen(false);\n },\n });\n\n const blockBeforeContinue = useBlockBeforeContinue();\n\n return (\n <Dialog\n open={isOpen}\n onOpenChange={(shouldOpen) => {\n if (shouldOpen) {\n blockBeforeContinue({\n onContinue: () => {\n setIsOpen(true);\n },\n });\n } else {\n setIsOpen(false);\n }\n }}\n >\n <DialogTrigger asChild>{children}</DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>New Enum</DialogTitle>\n <DialogDescription>\n Enums are a list of values that can be used in your data models.\n </DialogDescription>\n </DialogHeader>\n <form onSubmit={onSubmit} className=\"space-y-4\">\n <EnumInfoForm control={control} />\n <SwitchFieldController\n label=\"Expose in GraphQL schema\"\n control={control}\n name=\"isExposed\"\n description=\"Whether to expose this enum in the GraphQL schema\"\n />\n <DialogFooter>\n <DialogClose asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </DialogClose>\n <Button type=\"submit\" disabled={isSavingDefinition}>\n Create Enum\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":["useBlockBeforeContinue","importShared","Button","Dialog","DialogClose","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogTitle","DialogTrigger","SwitchFieldController","useControlledState","NewEnumDialog","children","open","onOpenChange","isOpen","setIsOpen","onSubmit","control","isSavingDefinition","useEnumForm","blockBeforeContinue","jsxs","shouldOpen","jsx","EnumInfoForm"],"mappings":"+MAEA,KAAA,CAAA,uBAAAA,CAAA,EAAA,MAAAC,EAAA,wCAAA,EACA,CAAA,OAAAC,EAAA,OAAAC,EAAA,YAAAC,EAAA,cAAAC,EAAA,kBAAAC,EAAA,aAAAC,EAAA,aAAAC,EAAA,YAAAC,EAAA,cAAAC,EAAA,sBAAAC,EAAA,mBAAAC,CAAA,EAAA,MAAAX,EAAA,8BAAA,EAuBO,SAASY,EAAc,CAC5B,SAAAC,EACA,KAAAC,EACA,aAAAC,CACF,EAA0C,CACxC,KAAM,CAACC,EAAQC,CAAS,EAAIN,EAAmBG,EAAMC,EAAc,EAAK,EAClE,CACJ,SAAAG,EACA,KAAM,CAAE,QAAAC,CAAQ,EAChB,mBAAAC,GACEC,EAAY,CACd,SAAU,GACV,gBAAiB,IAAM,CACrBJ,EAAU,EAAK,CAAA,CACjB,CACD,EAEKK,EAAsBvB,EAAuB,EAGjD,OAAAwB,EAAA,KAACrB,EAAA,CACC,KAAMc,EACN,aAAeQ,GAAe,CACxBA,EACkBF,EAAA,CAClB,WAAY,IAAM,CAChBL,EAAU,EAAI,CAAA,CAChB,CACD,EAEDA,EAAU,EAAK,CAEnB,EAEA,SAAA,CAACQ,EAAAA,IAAAhB,EAAA,CAAc,QAAO,GAAE,SAAAI,CAAS,CAAA,SAChCT,EACC,CAAA,SAAA,CAAAmB,OAAChB,EACC,CAAA,SAAA,CAAAkB,EAAAA,IAACjB,GAAY,SAAQ,UAAA,CAAA,EACrBiB,EAAAA,IAACpB,GAAkB,SAEnB,kEAAA,CAAA,CAAA,EACF,EACCkB,EAAA,KAAA,OAAA,CAAK,SAAAL,EAAoB,UAAU,YAClC,SAAA,CAAAO,MAACC,GAAa,QAAAP,EAAkB,EAChCM,EAAA,IAACf,EAAA,CACC,MAAM,2BACN,QAAAS,EACA,KAAK,YACL,YAAY,mDAAA,CACd,SACCb,EACC,CAAA,SAAA,CAACmB,EAAAA,IAAAtB,EAAA,CAAY,QAAO,GAClB,SAAAsB,EAAA,IAACxB,GAAO,QAAQ,YAAY,kBAAM,CACpC,CAAA,QACCA,EAAO,CAAA,KAAK,SAAS,SAAUmB,EAAoB,SAEpD,aAAA,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as t}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{j as e}from"./index.esm-CyH9wtdI.js";import{u as m}from"./use-model-form-D4qoaVd7.js";import{M as p}from"./model-info-form-B9t3m8Pj.js";const{useBlockBeforeContinue:f}=await t("@baseplate-dev/project-builder-lib/web"),{Button:s,Dialog:h,DialogClose:j,DialogContent:x,DialogDescription:g,DialogFooter:C,DialogHeader:D,DialogTitle:b,DialogTrigger:M,useControlledState:w}=await t("@baseplate-dev/ui-components");function N({children:i,open:r,onOpenChange:n}){const[l,o]=w(r,n,!1),{onSubmit:a,form:{control:c}}=m({isCreate:!0,modelKey:void 0,onSubmitSuccess:()=>{o(!1)}}),d=f();return e.jsxs(h,{open:l,onOpenChange:u=>{u?d({onContinue:()=>{o(!0)}}):o(!1)},children:[e.jsx(M,{asChild:!0,children:i}),e.jsxs(x,{children:[e.jsxs(D,{children:[e.jsx(b,{children:"New Model"}),e.jsx(g,{children:"Models define the structure of your data."})]}),e.jsxs("form",{onSubmit:a,className:"space-y-4",children:[e.jsx(p,{control:c}),e.jsxs(C,{children:[e.jsx(j,{asChild:!0,children:e.jsx(s,{variant:"secondary",children:"Cancel"})}),e.jsx(s,{type:"submit",children:"Create Model"})]})]})]})]})}export{N};
|
|
2
|
+
//# sourceMappingURL=new-model-dialog-uEX7hTid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-model-dialog-uEX7hTid.js","sources":["../../src/routes/data/models/-components/new-model-dialog.tsx"],"sourcesContent":["import type React from 'react';\n\nimport { useBlockBeforeContinue } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n useControlledState,\n} from '@baseplate-dev/ui-components';\n\nimport { useModelForm } from '../-hooks/use-model-form.js';\nimport { ModelInfoForm } from '../edit.$key/-components/model-info-form.js';\n\ninterface NewModelDialogProps {\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function NewModelDialog({\n children,\n open,\n onOpenChange,\n}: NewModelDialogProps): React.JSX.Element {\n const [isOpen, setIsOpen] = useControlledState(open, onOpenChange, false);\n const {\n onSubmit,\n form: { control },\n } = useModelForm({\n isCreate: true,\n modelKey: undefined,\n onSubmitSuccess: () => {\n setIsOpen(false);\n },\n });\n\n const blockBeforeContinue = useBlockBeforeContinue();\n\n return (\n <Dialog\n open={isOpen}\n onOpenChange={(shouldOpen) => {\n if (shouldOpen) {\n blockBeforeContinue({\n onContinue: () => {\n setIsOpen(true);\n },\n });\n } else {\n setIsOpen(false);\n }\n }}\n >\n <DialogTrigger asChild>{children}</DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>New Model</DialogTitle>\n <DialogDescription>\n Models define the structure of your data.\n </DialogDescription>\n </DialogHeader>\n <form onSubmit={onSubmit} className=\"space-y-4\">\n <ModelInfoForm control={control} />\n <DialogFooter>\n <DialogClose asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </DialogClose>\n <Button type=\"submit\">Create Model</Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":["useBlockBeforeContinue","importShared","Button","Dialog","DialogClose","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogTitle","DialogTrigger","useControlledState","NewModelDialog","children","open","onOpenChange","isOpen","setIsOpen","onSubmit","control","useModelForm","blockBeforeContinue","jsxs","shouldOpen","jsx","ModelInfoForm"],"mappings":"iNAEA,KAAA,CAAA,uBAAAA,CAAA,EAAA,MAAAC,EAAA,wCAAA,EACA,CAAA,OAAAC,EAAA,OAAAC,EAAA,YAAAC,EAAA,cAAAC,EAAA,kBAAAC,EAAA,aAAAC,EAAA,aAAAC,EAAA,YAAAC,EAAA,cAAAC,EAAA,mBAAAC,CAAA,EAAA,MAAAV,EAAA,8BAAA,EAsBO,SAASW,EAAe,CAC7B,SAAAC,EACA,KAAAC,EACA,aAAAC,CACF,EAA2C,CACzC,KAAM,CAACC,EAAQC,CAAS,EAAIN,EAAmBG,EAAMC,EAAc,EAAK,EAClE,CACJ,SAAAG,EACA,KAAM,CAAE,QAAAC,CAAQ,GACdC,EAAa,CACf,SAAU,GACV,SAAU,OACV,gBAAiB,IAAM,CACrBH,EAAU,EAAK,CAAA,CACjB,CACD,EAEKI,EAAsBrB,EAAuB,EAGjD,OAAAsB,EAAA,KAACnB,EAAA,CACC,KAAMa,EACN,aAAeO,GAAe,CACxBA,EACkBF,EAAA,CAClB,WAAY,IAAM,CAChBJ,EAAU,EAAI,CAAA,CAChB,CACD,EAEDA,EAAU,EAAK,CAEnB,EAEA,SAAA,CAACO,EAAAA,IAAAd,EAAA,CAAc,QAAO,GAAE,SAAAG,CAAS,CAAA,SAChCR,EACC,CAAA,SAAA,CAAAiB,OAACd,EACC,CAAA,SAAA,CAAAgB,EAAAA,IAACf,GAAY,SAAS,WAAA,CAAA,EACtBe,EAAAA,IAAClB,GAAkB,SAEnB,2CAAA,CAAA,CAAA,EACF,EACCgB,EAAA,KAAA,OAAA,CAAK,SAAAJ,EAAoB,UAAU,YAClC,SAAA,CAAAM,MAACC,GAAc,QAAAN,EAAkB,SAChCZ,EACC,CAAA,SAAA,CAACiB,EAAAA,IAAApB,EAAA,CAAY,QAAO,GAClB,SAAAoB,EAAA,IAACtB,GAAO,QAAQ,YAAY,kBAAM,CACpC,CAAA,EACCsB,EAAA,IAAAtB,EAAA,CAAO,KAAK,SAAS,SAAY,cAAA,CAAA,CAAA,CACpC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as l}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{j as e}from"./index.esm-CyH9wtdI.js";import{f as n,c as x,O as u,l as m}from"./index-gE__lQ6b.js";const{useProjectDefinition:f}=await l("@baseplate-dev/project-builder-lib/web"),{Button:s,Dialog:g,DialogClose:j,DialogContent:v,DialogFooter:D,DialogHeader:y,DialogTitle:b,DialogTrigger:w}=await l("@baseplate-dev/ui-components"),A=function(){const{saveDefinitionWithFeedbackSync:o,definition:r,isSavingDefinition:c}=f(),{app:a}=n.useLoaderData(),d=x({from:n.fullPath}),p=()=>{o(i=>{i.apps=i.apps.filter(h=>h.id!==a.id)},{successMessage:"Successfully unlinked app!",disableDeleteRefDialog:!0,onSuccess:()=>{d({to:"/apps"}).catch(m)}})},{packageScope:t}=r.settings.general;return e.jsxs("div",{className:"relative flex h-full flex-1 flex-col overflow-hidden",children:[e.jsx("div",{className:"max-w-7xl space-y-4 p-4",children:e.jsxs("div",{className:"flex items-center justify-between space-x-4",children:[e.jsxs("div",{children:[e.jsx("h2",{children:t?`@${t}/${a.name}`:a.name}),e.jsxs("p",{className:"text-base text-muted-foreground",children:[a.type," app"]})]}),e.jsxs(g,{children:[e.jsx(w,{asChild:!0,children:e.jsx(s,{variant:"secondary",children:"Delete"})}),e.jsxs(v,{children:[e.jsx(y,{children:e.jsxs(b,{children:["Delete ",a.name]})}),e.jsxs("p",{children:["Are you sure you want to delete ",e.jsx("strong",{children:a.name}),"?"]}),e.jsx("p",{className:"text-style-muted",children:"This action will unlink the app from the generation process, so it will no longer be updated or managed through Baseplate. If already generated, the app will remain on the file system. You can manually delete it afterwards if no longer needed."}),e.jsxs(D,{children:[e.jsx(j,{children:e.jsx(s,{variant:"secondary",children:"Cancel"})}),e.jsx(s,{variant:"destructive",onClick:p,disabled:c,children:"Unlink App"})]})]})]})]})}),e.jsx("div",{className:"mb-(--action-bar-height) flex flex-1 overflow-y-auto",style:{"--action-bar-height":"52px"},children:e.jsx(u,{})})]},a.id)};export{A as component};
|
|
2
|
+
//# sourceMappingURL=route-B2oYTZT4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-B2oYTZT4.js","sources":["../../src/routes/apps/edit.$key/route.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport { appEntityType } from '@baseplate-dev/project-builder-lib';\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n Dialog,\n DialogClose,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '@baseplate-dev/ui-components';\nimport {\n createFileRoute,\n notFound,\n Outlet,\n useNavigate,\n} from '@tanstack/react-router';\n\nimport { logAndFormatError } from '#src/services/error-formatter.js';\n\nexport const Route = createFileRoute('/apps/edit/$key')({\n component: EditAppPage,\n beforeLoad: ({ params: { key }, context: { projectDefinition } }) => {\n const id = appEntityType.idFromKey(key);\n const app = id && projectDefinition.apps.find((a) => a.id === id);\n if (!app) {\n return {};\n }\n return {\n getTitle: () => app.name,\n app,\n };\n },\n // Workaround for https://github.com/TanStack/router/issues/2139#issuecomment-2632375738\n // where throwing notFound() in beforeLoad causes the not found component to be rendered incorrectly\n loader: ({ context: { app } }) => {\n if (!app) throw notFound();\n return { app };\n },\n});\n\nfunction EditAppPage(): React.JSX.Element {\n const { saveDefinitionWithFeedbackSync, definition, isSavingDefinition } =\n useProjectDefinition();\n\n const { app } = Route.useLoaderData();\n\n const navigate = useNavigate({ from: Route.fullPath });\n\n const handleDelete = (): void => {\n saveDefinitionWithFeedbackSync(\n (definition) => {\n definition.apps = definition.apps.filter((a) => a.id !== app.id);\n },\n {\n successMessage: 'Successfully unlinked app!',\n disableDeleteRefDialog: true,\n onSuccess: () => {\n navigate({ to: '/apps' }).catch(logAndFormatError);\n },\n },\n );\n };\n\n const { packageScope } = definition.settings.general;\n\n return (\n <div\n className=\"relative flex h-full flex-1 flex-col overflow-hidden\"\n key={app.id}\n >\n <div className=\"max-w-7xl space-y-4 p-4\">\n <div className=\"flex items-center justify-between space-x-4\">\n <div>\n <h2>{packageScope ? `@${packageScope}/${app.name}` : app.name}</h2>\n <p className=\"text-base text-muted-foreground\">{app.type} app</p>\n </div>\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"secondary\">Delete</Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Delete {app.name}</DialogTitle>\n </DialogHeader>\n <p>\n Are you sure you want to delete <strong>{app.name}</strong>?\n </p>\n <p className=\"text-style-muted\">\n This action will unlink the app from the generation process, so\n it will no longer be updated or managed through Baseplate. If\n already generated, the app will remain on the file system. You\n can manually delete it afterwards if no longer needed.\n </p>\n\n <DialogFooter>\n <DialogClose>\n <Button variant=\"secondary\">Cancel</Button>\n </DialogClose>\n <Button\n variant=\"destructive\"\n onClick={handleDelete}\n disabled={isSavingDefinition}\n >\n Unlink App\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n </div>\n <div\n className=\"mb-(--action-bar-height) flex flex-1 overflow-y-auto\"\n style={\n {\n '--action-bar-height': '52px',\n } as React.CSSProperties\n }\n >\n <Outlet />\n </div>\n </div>\n );\n}\n"],"names":["useProjectDefinition","importShared","Button","Dialog","DialogClose","DialogContent","DialogFooter","DialogHeader","DialogTitle","DialogTrigger","SplitComponent","saveDefinitionWithFeedbackSync","definition","isSavingDefinition","app","Route","useLoaderData","navigate","useNavigate","from","fullPath","handleDelete","apps","filter","a","id","successMessage","disableDeleteRefDialog","onSuccess","to","catch","logAndFormatError","packageScope","settings","general","jsxs","jsx","name","type","Outlet"],"mappings":"2KAGA,KAAA,CAAA,qBAAAA,CAAA,EAAA,MAAAC,EAAA,wCAAA,EACA,CAAA,OAAAC,EAAA,OAAAC,EAAA,YAAAC,EAAA,cAAAC,EAAA,aAAAC,EAAA,aAAAC,EAAA,YAAAC,EAAA,cAAAC,CAAA,EAAA,MAAAR,EAAA,8BAAA,EAiBqES,EAAA,UAuB3B,CAClC,KAAA,CAAEC,+BAAAA,EAAgCC,WAAAA,EAAYC,mBAAAA,GAClDb,EAAqB,EAEjB,CAAEc,IAAAA,CAAAA,EAAQC,EAAMC,cAAc,EAE9BC,EAAWC,EAAY,CAAEC,KAAMJ,EAAMK,QAAAA,CAAU,EAE/CC,EAAeA,IAAY,CAC/BV,EACGC,GAAe,CACdA,EAAWU,KAAOV,EAAWU,KAAKC,OAAcC,GAAAA,EAAEC,KAAOX,EAAIW,EAAE,CAAA,EAEjE,CACEC,eAAgB,6BAChBC,uBAAwB,GACxBC,UAAWA,IAAM,CACNX,EAAA,CAAEY,GAAI,OAAA,CAAS,EAAEC,MAAMC,CAAiB,CAAA,CACnD,CAEJ,CACF,EAEM,CAAEC,aAAAA,CAAAA,EAAiBpB,EAAWqB,SAASC,QAG3C,OAAAC,EAAA,KAAC,MACC,CAAA,UAAU,uDAGV,SAAA,CAAAC,EAAAA,IAAC,OAAI,UAAU,0BACb,SAACD,EAAA,KAAA,MAAA,CAAI,UAAU,8CACb,SAAA,CAAAA,OAAC,MACC,CAAA,SAAA,CAACC,EAAAA,IAAA,KAAA,CAAIJ,WAAe,IAAIA,CAAY,IAAIlB,EAAIuB,IAAI,GAAKvB,EAAIuB,IAAK,CAAA,EAC9DF,EAAAA,KAAC,IAAE,CAAA,UAAU,kCAAmCrB,SAAAA,CAAIwB,EAAAA,KAAK,MAAA,CAAI,CAAA,CAAA,EAC/D,SACCnC,EACC,CAAA,SAAA,CAACiC,EAAAA,IAAA3B,EAAA,CAAc,QAAO,GACpB,SAAA2B,EAAA,IAAClC,GAAO,QAAQ,YAAY,kBAAM,CACpC,CAAA,SACCG,EACC,CAAA,SAAA,CAAC+B,EAAA,IAAA7B,EAAA,CACC,gBAACC,EAAY,CAAA,SAAA,CAAA,UAAQM,EAAIuB,IAAAA,CAAAA,CAAK,CAChC,CAAA,SACC,IAAC,CAAA,SAAA,CAAA,mCACgCD,EAAAA,IAAC,SAAQtB,CAAAA,SAAAA,EAAIuB,IAAK,CAAA,EAAS,GAAA,EAC7D,EACCD,EAAA,IAAA,IAAA,CAAE,UAAU,mBAAkB,SAK/B,sPAAA,SAEC9B,EACC,CAAA,SAAA,CAAA8B,EAAAA,IAAChC,GACC,SAACgC,EAAA,IAAAlC,EAAA,CAAO,QAAQ,YAAY,kBAAM,CACpC,CAAA,EACAkC,EAAAA,IAAClC,GACC,QAAQ,cACR,QAASmB,EACT,SAAUR,EAAmB,SAG/B,YAAA,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CACF,CACF,CAAA,EACCuB,EAAAA,IAAA,MAAA,CACC,UAAU,uDACV,MACE,CACE,sBAAuB,MACzB,EAGF,SAACA,EAAAA,IAAAG,EAAA,CAAM,CAAA,CACT,CAAA,CAAA,CAAA,EAnDKzB,EAAIW,EAoDX,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as s}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{j as e}from"./index.esm-CyH9wtdI.js";import{E as r,L as t,O as a}from"./index-gE__lQ6b.js";const{NavigationMenu:n,NavigationMenuLink:i,NavigationMenuList:o,SidebarLayout:l,SidebarLayoutContent:c,SidebarLayoutSidebar:d}=await s("@baseplate-dev/ui-components"),j=function(){return e.jsxs(l,{className:"h-full flex-1",children:[e.jsx(d,{className:"space-y-4",width:"sm",children:e.jsx(n,{orientation:"vertical",children:e.jsxs(o,{children:[e.jsx(i,{asChild:!0,children:e.jsx(t,{to:"/settings",from:"/",children:"Project settings"})}),e.jsx(i,{asChild:!0,children:e.jsx(t,{to:"/settings/hierarchy",from:"/",children:"Hierarchy"})}),e.jsx(i,{asChild:!0,children:e.jsx(t,{to:"/settings/theme-builder",from:"/",children:"Theme builder"})}),r&&e.jsx(i,{asChild:!0,children:e.jsx(t,{to:"/settings/template-extractor",from:"/",children:"Template extractor"})})]})})}),e.jsx(c,{className:"h-full",children:e.jsx(a,{})})]})};export{j as component};
|
|
2
|
+
//# sourceMappingURL=route-B6DRGm3t.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-B6DRGm3t.js","sources":["../../src/routes/settings/route.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport {\n NavigationMenu,\n NavigationMenuLink,\n NavigationMenuList,\n SidebarLayout,\n SidebarLayoutContent,\n SidebarLayoutSidebar,\n} from '@baseplate-dev/ui-components';\nimport { createFileRoute, Link, Outlet } from '@tanstack/react-router';\n\nimport { ENABLE_TEMPLATE_EXTRACTOR } from '#src/services/config.js';\n\nexport const Route = createFileRoute('/settings')({\n component: SettingsLayout,\n beforeLoad: () => ({\n getTitle: () => 'Settings',\n }),\n});\n\nfunction SettingsLayout(): React.JSX.Element {\n return (\n <SidebarLayout className=\"h-full flex-1\">\n <SidebarLayoutSidebar className=\"space-y-4\" width=\"sm\">\n <NavigationMenu orientation=\"vertical\">\n <NavigationMenuList>\n <NavigationMenuLink asChild>\n <Link to={`/settings`} from=\"/\">\n Project settings\n </Link>\n </NavigationMenuLink>\n <NavigationMenuLink asChild>\n <Link to={`/settings/hierarchy`} from=\"/\">\n Hierarchy\n </Link>\n </NavigationMenuLink>\n <NavigationMenuLink asChild>\n <Link to={`/settings/theme-builder`} from=\"/\">\n Theme builder\n </Link>\n </NavigationMenuLink>\n {ENABLE_TEMPLATE_EXTRACTOR && (\n <NavigationMenuLink asChild>\n <Link to={`/settings/template-extractor`} from=\"/\">\n Template extractor\n </Link>\n </NavigationMenuLink>\n )}\n </NavigationMenuList>\n </NavigationMenu>\n </SidebarLayoutSidebar>\n <SidebarLayoutContent className=\"h-full\">\n <Outlet />\n </SidebarLayoutContent>\n </SidebarLayout>\n );\n}\n"],"names":["NavigationMenu","NavigationMenuLink","NavigationMenuList","SidebarLayout","SidebarLayoutContent","SidebarLayoutSidebar","importShared","SplitComponent","jsxs","jsx","Link","ENABLE_TEMPLATE_EXTRACTOR","Outlet"],"mappings":"oKAEA,KAAA,CAAA,eAAAA,EAAA,mBAAAC,EAAA,mBAAAC,EAAA,cAAAC,EAAA,qBAAAC,EAAA,qBAAAC,CAAA,EAAA,MAAAC,EAAA,8BAAA,EAUoEC,EAAA,UASvB,CAEzC,OAAAC,EAAA,KAACL,EAAc,CAAA,UAAU,gBACvB,SAAA,CAACM,EAAA,IAAAJ,EAAA,CAAqB,UAAU,YAAY,MAAM,KAChD,eAACL,EAAe,CAAA,YAAY,WAC1B,SAAAQ,EAAAA,KAACN,EACC,CAAA,SAAA,CAACO,EAAA,IAAAR,EAAA,CAAmB,QAAO,GACzB,SAACQ,EAAA,IAAAC,EAAA,CAAK,GAAI,YAAa,KAAK,IAAG,SAAA,kBAE/B,CAAA,EACF,EACAD,EAAA,IAACR,EAAmB,CAAA,QAAO,GACzB,SAAAQ,EAAA,IAACC,EAAK,CAAA,GAAI,sBAAuB,KAAK,IAAG,SAAA,WAEzC,CAAA,EACF,EACAD,EAAA,IAACR,EAAmB,CAAA,QAAO,GACzB,SAAAQ,EAAA,IAACC,EAAK,CAAA,GAAI,0BAA2B,KAAK,IAAG,SAAA,eAE7C,CAAA,EACF,EACCC,GACCF,EAAA,IAACR,EAAmB,CAAA,QAAO,GACzB,SAAAQ,MAACC,EAAK,CAAA,GAAI,+BAAgC,KAAK,IAAG,SAAA,oBAAA,CAElD,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA,EACF,QACCN,EAAqB,CAAA,UAAU,SAC9B,SAAAK,EAAA,IAACG,IAAM,CACT,CAAA,CAAA,EACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{j as e}from"./index.esm-CyH9wtdI.js";import{L as n,O as r}from"./index-gE__lQ6b.js";import{B as d}from"./index-BS45dlQs.js";import{N as p}from"./new-app-dialog-Cd7rJ7i5.js";import{s as l}from"./immer-xieDw-3D.js";const{appEntityType:c}=await i("@baseplate-dev/project-builder-lib"),{useProjectDefinition:m}=await i("@baseplate-dev/project-builder-lib/web"),{Button:u,NavigationMenu:x,NavigationMenuItemWithLink:j,NavigationMenuList:f,SidebarLayout:h,SidebarLayoutContent:b,SidebarLayoutSidebar:y}=await i("@baseplate-dev/ui-components"),A=function(){const{definition:a}=m(),{apps:s}=a,o=l(s,[t=>t.name]);return e.jsxs(h,{className:"flex-1",children:[e.jsxs(y,{className:"space-y-4",width:"sm",children:[e.jsx("div",{className:"flex flex-col gap-4",children:e.jsx(p,{children:e.jsxs(u,{variant:"secondary",className:"w-full",children:[e.jsx(d,{}),"New App"]})})}),e.jsx(x,{orientation:"vertical",children:e.jsx(f,{children:o.map(t=>e.jsx(j,{asChild:!0,children:e.jsx(n,{to:"/apps/edit/$key",from:"/",params:{key:c.keyFromId(t.id)},children:t.name})},t.id))})})]}),e.jsx(b,{children:e.jsx(r,{})})]})};export{A as component};
|
|
2
|
+
//# sourceMappingURL=route-BOOZxY6E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-BOOZxY6E.js","sources":["../../src/routes/apps/route.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport { appEntityType } from '@baseplate-dev/project-builder-lib';\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n NavigationMenu,\n NavigationMenuItemWithLink,\n NavigationMenuList,\n SidebarLayout,\n SidebarLayoutContent,\n SidebarLayoutSidebar,\n} from '@baseplate-dev/ui-components';\nimport { createFileRoute, Link, Outlet } from '@tanstack/react-router';\nimport { sortBy } from 'es-toolkit';\nimport { MdAdd } from 'react-icons/md';\n\nimport NewAppDialog from './-components/new-app-dialog.js';\n\nexport const Route = createFileRoute('/apps')({\n component: AppsLayout,\n beforeLoad: () => ({\n getTitle: () => 'Apps',\n }),\n});\n\nfunction AppsLayout(): React.JSX.Element {\n const { definition } = useProjectDefinition();\n\n const { apps } = definition;\n const sortedApps = sortBy(apps, [(app) => app.name]);\n\n return (\n <SidebarLayout className=\"flex-1\">\n <SidebarLayoutSidebar className=\"space-y-4\" width=\"sm\">\n <div className=\"flex flex-col gap-4\">\n <NewAppDialog>\n <Button variant=\"secondary\" className=\"w-full\">\n <MdAdd />\n New App\n </Button>\n </NewAppDialog>\n </div>\n <NavigationMenu orientation=\"vertical\">\n <NavigationMenuList>\n {sortedApps.map((app) => (\n <NavigationMenuItemWithLink key={app.id} asChild>\n <Link\n to=\"/apps/edit/$key\"\n from=\"/\"\n params={{ key: appEntityType.keyFromId(app.id) }}\n >\n {app.name}\n </Link>\n </NavigationMenuItemWithLink>\n ))}\n </NavigationMenuList>\n </NavigationMenu>\n </SidebarLayoutSidebar>\n <SidebarLayoutContent>\n <Outlet />\n </SidebarLayoutContent>\n </SidebarLayout>\n );\n}\n"],"names":["appEntityType","importShared","useProjectDefinition","Button","NavigationMenu","NavigationMenuItemWithLink","NavigationMenuList","SidebarLayout","SidebarLayoutContent","SidebarLayoutSidebar","SplitComponent","definition","apps","sortedApps","sortBy","app","name","jsxs","jsx","NewAppDialog","MdAdd","map","Link","key","keyFromId","id","Outlet"],"mappings":"yRAEA,KAAA,CAAA,cAAAA,CAAA,EAAA,MAAAC,EAAA,oCAAA,EACA,CAAA,qBAAAC,CAAA,EAAA,MAAAD,EAAA,wCAAA,EACA,CAAA,OAAAE,EAAA,eAAAC,EAAA,2BAAAC,EAAA,mBAAAC,EAAA,cAAAC,EAAA,qBAAAC,EAAA,qBAAAC,CAAA,EAAA,MAAAR,EAAA,8BAAA,EAa2DS,EAAA,UASlB,CACjC,KAAA,CAAEC,WAAAA,GAAeT,EAAqB,EAEtC,CAAEU,KAAAA,CAAAA,EAASD,EACXE,EAAaC,EAAOF,EAAM,CAAUG,GAAAA,EAAIC,IAAI,CAAC,EAGjD,OAAAC,EAAA,KAACV,EAAc,CAAA,UAAU,SACvB,SAAA,CAAAU,EAAA,KAACR,EAAqB,CAAA,UAAU,YAAY,MAAM,KAChD,SAAA,CAACS,EAAA,IAAA,MAAA,CAAI,UAAU,sBACb,SAACA,EAAA,IAAAC,EAAA,CACC,gBAAChB,EAAO,CAAA,QAAQ,YAAY,UAAU,SACpC,SAAA,CAAAe,EAAA,IAACE,EAAK,EAAA,EAAA,SAAA,CAER,CAAA,CACF,CAAA,EACF,QACChB,EAAe,CAAA,YAAY,WAC1B,SAACc,MAAAZ,EAAA,CACEO,WAAWQ,IAAKN,SACdV,EAAwC,CAAA,QAAO,GAC9C,SAACa,EAAA,IAAAI,EAAA,CACC,GAAG,kBACH,KAAK,IACL,OAAQ,CAAEC,IAAKvB,EAAcwB,UAAUT,EAAIU,EAAE,CAAA,EAE5CV,WAAIC,IACP,CAAA,CAAA,EAP+BD,EAAIU,EAQrC,CACD,EACH,CACF,CAAA,CAAA,EACF,EACCP,EAAA,IAAAV,EAAA,CACC,SAACU,EAAAA,IAAAQ,EAAA,CAAA,CAAM,CACT,CAAA,CAAA,EACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e}from"./index.esm-CyH9wtdI.js";import{c as j,l as p,j as v,O as b}from"./index-gE__lQ6b.js";import{i as o}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{c as g,I as y,K as E}from"./index-BS45dlQs.js";import{E as C}from"./enum-info-form-BjI1ArPU.js";import{u as D}from"./use-enum-form-DQza9C6Q.js";const{Button:f,Dialog:N,DialogClose:S,DialogContent:w,DialogFooter:F,DialogHeader:I,DialogTitle:B,DialogTrigger:O,useControlledState:R}=await o("@baseplate-dev/ui-components");function T({enumKey:s,open:t,onOpenChange:a,asChild:r,children:l}){const[c,i]=R(t,a,!1),{form:{control:d,reset:u},onSubmit:n,defaultValues:m,isSavingDefinition:h}=D({enumKey:s,onSubmitSuccess(){i(!1)}});return e.jsxs(N,{open:c,onOpenChange:x=>{i(x),x||u(m)},children:[e.jsx(O,{asChild:r,children:l}),e.jsx(w,{"aria-describedby":void 0,children:e.jsxs("form",{onSubmit:n,className:"space-y-4",children:[e.jsx(I,{children:e.jsx(B,{children:"Edit Enum Info"})}),e.jsx(C,{control:d}),e.jsxs(F,{children:[e.jsx(S,{asChild:!0,children:e.jsx(f,{variant:"secondary",children:"Cancel"})}),e.jsx(f,{type:"submit",disabled:h,children:"Save"})]})]})})]})}const{FeatureUtils:k,modelEnumEntityType:z}=await o("@baseplate-dev/project-builder-lib"),{useProjectDefinition:A}=await o("@baseplate-dev/project-builder-lib/web"),{Button:H,useConfirmDialog:K}=await o("@baseplate-dev/ui-components");function L({className:s,enumDefinition:t}){const{definition:a,saveDefinitionWithFeedbackSync:r,isSavingDefinition:l}=A(),c=j(),{requestConfirm:i}=K(),d=u=>{r(n=>{n.enums=n.enums?.filter(m=>m.id!==u)},{onSuccess:()=>{c({to:"/data/enums"}).catch(p)}})};return e.jsxs("div",{className:g("flex items-center justify-between",s),children:[e.jsxs("div",{children:[e.jsx(T,{enumKey:z.keyFromId(t.id),asChild:!0,children:e.jsxs("button",{className:"group flex items-center space-x-2 hover:cursor-pointer",type:"button",title:"Edit Enum Info",children:[e.jsx("h1",{children:t.name}),e.jsx(y,{className:"invisible size-4 group-hover:visible"})]})}),t.featureRef&&e.jsx("div",{className:"text-xs text-muted-foreground",children:k.getFeatureById(a,t.featureRef)?.name})]}),e.jsx("div",{className:"flex gap-8",children:e.jsxs(H,{variant:"outline",size:"icon",onClick:()=>{i({title:"Confirm delete",content:`Are you sure you want to delete ${t.name}?`,buttonConfirmVariant:"destructive",buttonConfirmText:"Delete",onConfirm:()=>{d(t.id)}})},disabled:l,children:[e.jsx(E,{className:"text-destructive"}),e.jsx("div",{className:"sr-only",children:"Delete Enum"})]})})]})}const W=function(){const{enumDefinition:t}=v.useLoaderData();return e.jsxs("div",{className:"relative flex h-full flex-1 flex-col overflow-hidden",children:[e.jsx("div",{className:"mx-4 max-w-7xl space-y-4 border-b py-4",children:e.jsx(L,{enumDefinition:t})}),e.jsx("div",{className:"mb-(--action-bar-height) flex flex-1 overflow-y-auto",children:e.jsx(b,{})})]},t.id)};export{W as component};
|
|
2
|
+
//# sourceMappingURL=route-BwqWBMDI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-BwqWBMDI.js","sources":["../../src/routes/data/enums/edit.$key/-components/enum-info-edit-dialog.tsx","../../src/routes/data/enums/edit.$key/-components/enum-header-bar.tsx","../../src/routes/data/enums/edit.$key/route.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport {\n Button,\n Dialog,\n DialogClose,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n useControlledState,\n} from '@baseplate-dev/ui-components';\n\nimport { EnumInfoForm } from '../../-components/enum-info-form.js';\nimport { useEnumForm } from '../../-hooks/use-enum-form.js';\n\ninterface EnumInfoEditDialogProps {\n enumKey: string;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: React.ReactNode;\n asChild?: boolean;\n}\n\nexport function EnumInfoEditDialog({\n enumKey,\n open,\n onOpenChange,\n asChild,\n children,\n}: EnumInfoEditDialogProps): React.JSX.Element {\n const [isOpen, setIsOpen] = useControlledState(open, onOpenChange, false);\n\n const {\n form: { control, reset },\n onSubmit,\n defaultValues,\n isSavingDefinition,\n } = useEnumForm({\n enumKey,\n onSubmitSuccess() {\n setIsOpen(false);\n },\n });\n\n return (\n <Dialog\n open={isOpen}\n onOpenChange={(newOpen) => {\n setIsOpen(newOpen);\n if (!newOpen) {\n reset(defaultValues);\n }\n }}\n >\n <DialogTrigger asChild={asChild}>{children}</DialogTrigger>\n <DialogContent aria-describedby={undefined}>\n <form onSubmit={onSubmit} className=\"space-y-4\">\n <DialogHeader>\n <DialogTitle>Edit Enum Info</DialogTitle>\n </DialogHeader>\n <EnumInfoForm control={control} />\n <DialogFooter>\n <DialogClose asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </DialogClose>\n <Button type=\"submit\" disabled={isSavingDefinition}>\n Save\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n","import type { EnumConfig } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\n\nimport {\n FeatureUtils,\n modelEnumEntityType,\n} from '@baseplate-dev/project-builder-lib';\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport { Button, useConfirmDialog } from '@baseplate-dev/ui-components';\nimport { useNavigate } from '@tanstack/react-router';\nimport { clsx } from 'clsx';\nimport { MdDeleteOutline, MdEdit } from 'react-icons/md';\n\nimport { logAndFormatError } from '#src/services/error-formatter.js';\n\nimport { EnumInfoEditDialog } from './enum-info-edit-dialog.js';\n\ninterface EnumHeaderBarProps {\n className?: string;\n enumDefinition: EnumConfig;\n}\n\nexport function EnumHeaderBar({\n className,\n enumDefinition,\n}: EnumHeaderBarProps): React.JSX.Element {\n const { definition, saveDefinitionWithFeedbackSync, isSavingDefinition } =\n useProjectDefinition();\n const navigate = useNavigate();\n const { requestConfirm } = useConfirmDialog();\n\n const handleDelete = (id: string): void => {\n saveDefinitionWithFeedbackSync(\n (draftConfig) => {\n draftConfig.enums = draftConfig.enums?.filter((m) => m.id !== id);\n },\n {\n onSuccess: () => {\n navigate({ to: '/data/enums' }).catch(logAndFormatError);\n },\n },\n );\n };\n\n return (\n <div className={clsx('flex items-center justify-between', className)}>\n <div>\n <EnumInfoEditDialog\n enumKey={modelEnumEntityType.keyFromId(enumDefinition.id)}\n asChild\n >\n <button\n className=\"group flex items-center space-x-2 hover:cursor-pointer\"\n type=\"button\"\n title=\"Edit Enum Info\"\n >\n <h1>{enumDefinition.name}</h1>\n <MdEdit className=\"invisible size-4 group-hover:visible\" />\n </button>\n </EnumInfoEditDialog>\n {enumDefinition.featureRef && (\n <div className=\"text-xs text-muted-foreground\">\n {\n FeatureUtils.getFeatureById(definition, enumDefinition.featureRef)\n ?.name\n }\n </div>\n )}\n </div>\n <div className=\"flex gap-8\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => {\n requestConfirm({\n title: 'Confirm delete',\n content: `Are you sure you want to delete ${\n enumDefinition.name\n }?`,\n buttonConfirmVariant: 'destructive',\n buttonConfirmText: 'Delete',\n onConfirm: () => {\n handleDelete(enumDefinition.id);\n },\n });\n }}\n disabled={isSavingDefinition}\n >\n <MdDeleteOutline className=\"text-destructive\" />\n <div className=\"sr-only\">Delete Enum</div>\n </Button>\n </div>\n </div>\n );\n}\n","import type React from 'react';\n\nimport {\n EnumUtils,\n modelEnumEntityType,\n} from '@baseplate-dev/project-builder-lib';\nimport { createFileRoute, notFound, Outlet } from '@tanstack/react-router';\n\nimport { EnumHeaderBar } from './-components/enum-header-bar.js';\n\nexport const Route = createFileRoute('/data/enums/edit/$key')({\n component: EnumEditLayout,\n beforeLoad: ({ params: { key }, context: { projectDefinition } }) => {\n const id = modelEnumEntityType.idFromKey(key);\n const enumDefinition = EnumUtils.byId(projectDefinition, id);\n if (!enumDefinition) return {};\n return {\n getTitle: () => enumDefinition.name,\n enumDefinition,\n };\n },\n // Workaround for https://github.com/TanStack/router/issues/2139#issuecomment-2632375738\n // where throwing notFound() in beforeLoad causes the not found component to be rendered incorrectly\n loader: ({ context: { enumDefinition } }) => {\n if (!enumDefinition) throw notFound();\n return { enumDefinition };\n },\n});\n\nfunction EnumEditLayout(): React.JSX.Element {\n const { enumDefinition } = Route.useLoaderData();\n\n return (\n <div\n className=\"relative flex h-full flex-1 flex-col overflow-hidden\"\n key={enumDefinition.id}\n >\n <div className=\"mx-4 max-w-7xl space-y-4 border-b py-4\">\n <EnumHeaderBar enumDefinition={enumDefinition} />\n </div>\n <div className=\"mb-(--action-bar-height) flex flex-1 overflow-y-auto\">\n <Outlet />\n </div>\n </div>\n );\n}\n"],"names":["Button","Dialog","DialogClose","DialogContent","DialogFooter","DialogHeader","DialogTitle","DialogTrigger","useControlledState","importShared","EnumInfoEditDialog","enumKey","open","onOpenChange","asChild","children","isOpen","setIsOpen","control","reset","onSubmit","defaultValues","isSavingDefinition","useEnumForm","jsxs","newOpen","jsx","EnumInfoForm","FeatureUtils","modelEnumEntityType","useProjectDefinition","useConfirmDialog","EnumHeaderBar","className","enumDefinition","definition","saveDefinitionWithFeedbackSync","navigate","useNavigate","requestConfirm","handleDelete","id","draftConfig","logAndFormatError","clsx","MdEdit","MdDeleteOutline","SplitComponent","Route","useLoaderData","Outlet"],"mappings":"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"}
|