@stripe/extensibility-dev-tools 0.24.3 → 0.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/bin/build-custom-object-definitions.cjs +165 -34
  2. package/dist/bin/build-custom-object-definitions.js +156 -25
  3. package/dist/bin/create-upload-image.cjs +164 -33
  4. package/dist/bin/create-upload-image.js +156 -25
  5. package/dist/bin/dev-tools-rpc.cjs +199 -59
  6. package/dist/bin/dev-tools-rpc.js +174 -34
  7. package/dist/bin/gen-workspace.cjs +187 -47
  8. package/dist/bin/gen-workspace.js +174 -34
  9. package/dist/bin/template-info.cjs +161 -30
  10. package/dist/bin/template-info.js +156 -25
  11. package/dist/custom-objects/generated/proto/custom_objects/pub/api/app_api/object_definitions_app_service.pb.d.ts +32 -0
  12. package/dist/custom-objects/generated/proto/custom_objects/pub/api/app_api/object_definitions_app_service.pb.d.ts.map +1 -1
  13. package/dist/custom-objects/generated/proto/google/protobuf/descriptor.pb.d.ts +2 -2
  14. package/dist/custom-objects/generated/proto/google/protobuf/wrappers.pb.d.ts +168 -0
  15. package/dist/custom-objects/generated/proto/google/protobuf/wrappers.pb.d.ts.map +1 -0
  16. package/dist/custom-objects/generated/proto/proto/extensions.pb.d.ts +4 -4
  17. package/dist/custom-objects/generated/proto/proto/extensions.pb.d.ts.map +1 -1
  18. package/dist/custom-objects/generated/proto/vendor/proto/model/common/common_model.pb.d.ts +1553 -0
  19. package/dist/custom-objects/generated/proto/vendor/proto/model/common/common_model.pb.d.ts.map +1 -0
  20. package/dist/custom-objects/generated/proto/vendor/proto/model/common/kronos_model.pb.d.ts +1372 -0
  21. package/dist/custom-objects/generated/proto/vendor/proto/model/common/kronos_model.pb.d.ts.map +1 -0
  22. package/dist/custom-objects/generated/proto/vendor/publicapi/api_group_enum.pb.d.ts +2 -0
  23. package/dist/custom-objects/generated/proto/vendor/publicapi/api_group_enum.pb.d.ts.map +1 -1
  24. package/dist/custom-objects/generated/proto/vendor/publicapi/extension_interface.pb.d.ts +2 -0
  25. package/dist/custom-objects/generated/proto/vendor/publicapi/extension_interface.pb.d.ts.map +1 -1
  26. package/dist/custom-objects/generated/proto/vendor/publicapi/feature_enum.pb.d.ts +14 -2
  27. package/dist/custom-objects/generated/proto/vendor/publicapi/feature_enum.pb.d.ts.map +1 -1
  28. package/dist/custom-objects/generated/proto/vendor/publicapi/http_error_status.pb.d.ts +6 -0
  29. package/dist/custom-objects/generated/proto/vendor/publicapi/http_error_status.pb.d.ts.map +1 -1
  30. package/dist/custom-objects/generated/proto/vendor/publicapi/rollout_configs.pb.d.ts +74 -0
  31. package/dist/custom-objects/generated/proto/vendor/publicapi/rollout_configs.pb.d.ts.map +1 -1
  32. package/dist/custom-objects/generated/proto/vendor/publicapi/v2ext.pb.d.ts +10 -3
  33. package/dist/custom-objects/generated/proto/vendor/publicapi/v2ext.pb.d.ts.map +1 -1
  34. package/dist/custom-objects/generated/proto/vendor/vext/privacy_unified_annotations.pb.d.ts +1 -0
  35. package/dist/custom-objects/generated/proto/vendor/vext/privacy_unified_annotations.pb.d.ts.map +1 -1
  36. package/dist/index.cjs +192 -52
  37. package/dist/index.js +174 -34
  38. package/dist/templates/extensions/billing.invoice_collection_options.d.ts +6 -0
  39. package/dist/templates/extensions/billing.invoice_collection_options.d.ts.map +1 -0
  40. package/dist/templates/index.cjs +174 -34
  41. package/dist/templates/index.js +172 -32
  42. package/dist/templates/root/index.d.ts.map +1 -1
  43. package/dist/tsconfig.build.tsbuildinfo +1 -1
  44. package/dist/workspace/index.cjs +183 -43
  45. package/dist/workspace/index.d.ts.map +1 -1
  46. package/dist/workspace/index.js +174 -34
  47. package/dist/workspace-versions.d.ts +26 -0
  48. package/dist/workspace-versions.d.ts.map +1 -0
  49. package/package.json +4 -4
  50. package/templates/extensions/billing.invoice_collection_options/index.test.ts +15 -0
  51. package/templates/extensions/billing.invoice_collection_options/index.ts +16 -0
  52. package/templates/root/custom-objects/eslint.config.mts +89 -0
  53. package/templates/root/custom-objects/package.json.mustache +2 -0
  54. package/templates/root/custom-objects/tsconfig.json +1 -0
  55. package/templates/root/custom-objects/vitest.config.mts +7 -0
  56. package/templates/root/package.json.mustache +1 -1
  57. package/templates/root/tools/test.mts +4 -2
  58. package/dist/templates/extensions/billing.invoice_collection_setting.d.ts +0 -6
  59. package/dist/templates/extensions/billing.invoice_collection_setting.d.ts.map +0 -1
  60. package/templates/extensions/billing.invoice_collection_setting/index.test.ts +0 -15
  61. package/templates/extensions/billing.invoice_collection_setting/index.ts +0 -16
@@ -90,35 +90,35 @@ export default class MyBalanceApp implements Billing.CustomerBalanceApplication<
90
90
  `
91
91
  },
92
92
  {
93
- path: "extensions/billing.invoice_collection_setting/index.test.ts",
93
+ path: "extensions/billing.invoice_collection_options/index.test.ts",
94
94
  content: `import { beforeEach, describe, it, expect } from 'vitest';
95
95
 
96
- import MyInvoiceCollectionSetting from './index.js';
96
+ import MyInvoiceCollectionOptions from './index.js';
97
97
 
98
- describe('MyInvoiceCollectionSetting', () => {
99
- let instance: MyInvoiceCollectionSetting;
98
+ describe('MyInvoiceCollectionOptions', () => {
99
+ let instance: MyInvoiceCollectionOptions;
100
100
 
101
101
  beforeEach(() => {
102
- instance = new MyInvoiceCollectionSetting();
102
+ instance = new MyInvoiceCollectionOptions();
103
103
  });
104
104
 
105
105
  it('should be constructable', () => {
106
- expect(instance).toBeInstanceOf(MyInvoiceCollectionSetting);
106
+ expect(instance).toBeInstanceOf(MyInvoiceCollectionOptions);
107
107
  });
108
108
  });
109
109
  `
110
110
  },
111
111
  {
112
- path: "extensions/billing.invoice_collection_setting/index.ts",
112
+ path: "extensions/billing.invoice_collection_options/index.ts",
113
113
  content: `import type { Billing, Context } from '@stripe/extensibility-sdk';
114
114
 
115
115
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
116
- interface MyInvoiceCollectionSettingConfig {}
116
+ interface MyInvoiceCollectionOptionsConfig {}
117
117
 
118
- export default class MyInvoiceCollectionSetting implements Billing.InvoiceCollectionSetting<MyInvoiceCollectionSettingConfig> {
119
- collectionOverride(
120
- _request: Billing.InvoiceCollectionSetting.InvoiceCollectionRequest,
121
- _config: MyInvoiceCollectionSettingConfig,
118
+ export default class MyInvoiceCollectionOptions implements Billing.InvoiceCollectionOptions<MyInvoiceCollectionOptionsConfig> {
119
+ overrideOptions(
120
+ _request: Billing.InvoiceCollectionOptions.InvoiceCollectionOptionsInput,
121
+ _config: MyInvoiceCollectionOptionsConfig,
122
122
  _context: Context
123
123
  ) {
124
124
  // TODO: implement your collection setting logic here
@@ -590,6 +590,99 @@ install-deps.log
590
590
 
591
591
  # generated schemas
592
592
  generated
593
+ `
594
+ },
595
+ {
596
+ path: "root/custom-objects/eslint.config.mts",
597
+ content: `import eslint from '@eslint/js';
598
+ import { defineConfig } from 'eslint/config';
599
+ import tseslint from 'typescript-eslint';
600
+ import eslintConfigPrettier from 'eslint-config-prettier/flat';
601
+
602
+ import globals from 'globals';
603
+
604
+ import stripeAppsConfig from '@stripe/extensibility-eslint-plugin';
605
+ import customObjectsConfig from '@stripe/extensibility-eslint-plugin/custom-objects';
606
+
607
+ export default defineConfig([
608
+ eslint.configs.recommended,
609
+ ...tseslint.configs.recommended,
610
+ ...stripeAppsConfig,
611
+ ...customObjectsConfig,
612
+
613
+ // Global ignores
614
+ {
615
+ ignores: ['dist', 'generated', 'node_modules'],
616
+ },
617
+
618
+ // TypeScript source files (with type-checking)
619
+ {
620
+ name: 'sources',
621
+ files: ['src/**/*.ts'],
622
+ ignores: ['**/*.test.ts', '**/__tests__/**'],
623
+ languageOptions: {
624
+ globals: {
625
+ ...globals.node,
626
+ },
627
+ parserOptions: {
628
+ projectService: true,
629
+ tsconfigRootDir: import.meta.dirname,
630
+ },
631
+ },
632
+ },
633
+
634
+ // Test files
635
+ {
636
+ name: 'tests',
637
+ files: ['src/**/*.test.ts', 'src/**/__tests__/**/*.ts'],
638
+ languageOptions: {
639
+ globals: {
640
+ ...globals.node,
641
+ },
642
+ parserOptions: {
643
+ projectService: true,
644
+ tsconfigRootDir: import.meta.dirname,
645
+ },
646
+ },
647
+ },
648
+
649
+ // Config files
650
+ {
651
+ name: 'ts-configs',
652
+ files: ['*.config.m?ts', 'eslint.config.mts'],
653
+ languageOptions: {
654
+ globals: {
655
+ ...globals.node,
656
+ },
657
+ parserOptions: {
658
+ projectService: false,
659
+ },
660
+ },
661
+ rules: {
662
+ '@typescript-eslint/no-unused-vars': 'off',
663
+ },
664
+ },
665
+
666
+ // JavaScript/MJS files (scripts, configs) \u2014 no TS project, so only
667
+ // disable the TS-parser-specific rule that doesn't apply without it.
668
+ {
669
+ name: 'js-configs',
670
+ files: ['**/*.js', '**/*.mjs'],
671
+ languageOptions: {
672
+ globals: {
673
+ ...globals.node,
674
+ },
675
+ parserOptions: {
676
+ projectService: false,
677
+ },
678
+ },
679
+ rules: {
680
+ '@typescript-eslint/no-require-imports': 'off',
681
+ },
682
+ },
683
+
684
+ eslintConfigPrettier,
685
+ ]);
593
686
  `
594
687
  },
595
688
  {
@@ -602,7 +695,9 @@ generated
602
695
  "private": true,
603
696
  "scripts": {
604
697
  "build": "test -d src && custom-objects-build --input src --output dist || true",
698
+ "lint": "pnpm lint:types && pnpm lint:eslint",
605
699
  "lint:types": "test ! -d src || tsc --noEmit",
700
+ "lint:eslint": "eslint .",
606
701
  "test": "vitest run"
607
702
  },
608
703
  "dependencies": {
@@ -625,8 +720,20 @@ generated
625
720
  "moduleResolution": "bundler",
626
721
  "types": ["vitest/globals"]
627
722
  },
723
+ "include": ["src/**/*.ts"],
628
724
  "exclude": ["dist"]
629
725
  }
726
+ `
727
+ },
728
+ {
729
+ path: "root/custom-objects/vitest.config.mts",
730
+ content: `import { defineConfig } from 'vitest/config';
731
+
732
+ export default defineConfig({
733
+ test: {
734
+ globals: true,
735
+ },
736
+ });
630
737
  `
631
738
  },
632
739
  {
@@ -744,7 +851,7 @@ export default defineConfig([
744
851
  "build": "pnpm -r --if-present build",
745
852
  "lint": "pnpm lint:types && pnpm lint:eslint && pnpm lint:format",
746
853
  "lint:types": "pnpm -r --if-present lint:types",
747
- "lint:eslint": "eslint . --ignore-pattern 'extensions/**' && pnpm -r --filter './extensions/*' --if-present lint:eslint",
854
+ "lint:eslint": "eslint . --ignore-pattern 'extensions/**' && pnpm -r --filter './extensions/*' --if-present lint:eslint && pnpm -r --filter './custom-objects' --if-present lint:eslint",
748
855
  "lint:format": "prettier --check .",
749
856
  "fix:lint": "eslint --fix . --ignore-pattern 'extensions/**' && pnpm -r --filter './extensions/*' --if-present fix:lint",
750
857
  "fix:format": "prettier --write .",
@@ -790,7 +897,7 @@ declarations:
790
897
  content: `#!/usr/bin/env tsx
791
898
  /**
792
899
  * Runs tests across the workspace:
793
- * - vitest for script extensions and custom objects (extensions/*)
900
+ * - vitest for script extensions (extensions/*) and custom objects (custom-objects/)
794
901
  * - jest for UI extensions (ui/)
795
902
  */
796
903
  import { existsSync, readdirSync } from 'node:fs';
@@ -800,6 +907,8 @@ const hasExtensions =
800
907
  existsSync('extensions') &&
801
908
  readdirSync('extensions').some((name) => existsSync(\`extensions/\${name}/package.json\`));
802
909
 
910
+ const hasCustomObjects = existsSync('custom-objects/package.json');
911
+
803
912
  const hasUI = existsSync('ui/package.json');
804
913
 
805
914
  let exitCode = 0;
@@ -812,7 +921,7 @@ function run(cmd: string): void {
812
921
  }
813
922
  }
814
923
 
815
- if (hasExtensions) {
924
+ if (hasExtensions || hasCustomObjects) {
816
925
  run('vitest run');
817
926
  }
818
927
 
@@ -1596,8 +1705,30 @@ function _devNpmDep(name, version) {
1596
1705
  return { type: "dev-npm", name, version };
1597
1706
  }
1598
1707
 
1708
+ // src/workspace-versions.json
1709
+ var workspace_versions_default = {
1710
+ "@stripe/extensibility-custom-objects": "0.8.0",
1711
+ "@stripe/extensibility-custom-objects-tools": "0.42.1",
1712
+ "@stripe/extensibility-dev-tools": "0.25.1",
1713
+ "@stripe/extensibility-eslint-plugin": "0.17.1",
1714
+ "@stripe/extensibility-language-server": "0.3.4",
1715
+ "@stripe/extensibility-sdk": "0.27.1",
1716
+ "@stripe/extensibility-test-helpers": "0.2.7"
1717
+ };
1718
+
1719
+ // src/workspace-versions.ts
1720
+ var _workspaceVersions = workspace_versions_default;
1721
+ function _workspaceVersion(packageName) {
1722
+ const v = _workspaceVersions[packageName];
1723
+ if (v === void 0) {
1724
+ throw new Error(
1725
+ `Unknown workspace package "${packageName}". Check workspace-versions.json or run: tsx scripts/src/sync-workspace-versions.ts`
1726
+ );
1727
+ }
1728
+ return v;
1729
+ }
1730
+
1599
1731
  // src/templates/extensions/base.ts
1600
- import { _workspaceVersion } from "@stripe/extensibility-tool-utils";
1601
1732
  var SDK_PACKAGE_NAME = "@stripe/extensibility-sdk";
1602
1733
  var LANGUAGE_SERVER_PACKAGE_NAME = "@stripe/extensibility-language-server";
1603
1734
  var LANGUAGE_SERVER_PACKAGE_VERSION = `^${_workspaceVersion(LANGUAGE_SERVER_PACKAGE_NAME)}`;
@@ -1902,14 +2033,14 @@ var billing_bill_discount_calculation_default = {
1902
2033
  [EXTENSION_INTERFACE_ID5]: discountCalculationTemplate
1903
2034
  };
1904
2035
 
1905
- // src/templates/extensions/billing.invoice_collection_setting.ts
1906
- var EXTENSION_INTERFACE_ID6 = "billing.invoice_collection_setting";
1907
- var invoiceCollectionSettingTemplate = {
2036
+ // src/templates/extensions/billing.invoice_collection_options.ts
2037
+ var EXTENSION_INTERFACE_ID6 = "billing.invoice_collection_options";
2038
+ var invoiceCollectionOptionsTemplate = {
1908
2039
  hidden: true,
1909
2040
  methods: {
1910
- collection_override: { implementation_types: ["script"] }
2041
+ override_options: { implementation_types: ["script"] }
1911
2042
  },
1912
- description: "Use Stripe Scripts to create custom invoice collection logic that controls how your integration handles invoices generated from subscriptions.",
2043
+ description: "Use Stripe Scripts to create custom invoice collection options that controls how your integration handles invoices generated from subscriptions.",
1913
2044
  generate: (params, context) => {
1914
2045
  const { id } = params;
1915
2046
  const { fs: fs2 } = context;
@@ -1937,15 +2068,15 @@ var invoiceCollectionSettingTemplate = {
1937
2068
  ...base.files
1938
2069
  ],
1939
2070
  methods: {
1940
- collection_override: {
2071
+ override_options: {
1941
2072
  implementation_type: "script"
1942
2073
  }
1943
2074
  }
1944
2075
  };
1945
2076
  }
1946
2077
  };
1947
- var billing_invoice_collection_setting_default = {
1948
- [EXTENSION_INTERFACE_ID6]: invoiceCollectionSettingTemplate
2078
+ var billing_invoice_collection_options_default = {
2079
+ [EXTENSION_INTERFACE_ID6]: invoiceCollectionOptionsTemplate
1949
2080
  };
1950
2081
 
1951
2082
  // src/templates/extensions/billing.prorations.ts
@@ -2053,7 +2184,7 @@ var DEFAULT_TEMPLATES = {
2053
2184
  ...extend_workflows_custom_action_default,
2054
2185
  ...billing_customer_balance_application_default,
2055
2186
  ...billing_bill_discount_calculation_default,
2056
- ...billing_invoice_collection_setting_default,
2187
+ ...billing_invoice_collection_options_default,
2057
2188
  ...billing_prorations_default,
2058
2189
  ...billing_recurring_billing_item_handling_default
2059
2190
  };
@@ -2066,9 +2197,8 @@ var _templateManager = new _ExtensionTemplateManager(
2066
2197
  );
2067
2198
 
2068
2199
  // src/templates/root/index.ts
2069
- import { _workspaceVersion as _workspaceVersion2 } from "@stripe/extensibility-tool-utils";
2070
2200
  var EXTENSIBILITY_ESLINT_PLUGIN_PACKAGE_NAME = "@stripe/extensibility-eslint-plugin";
2071
- var EXTENSIBILITY_ESLINT_PLUGIN_VERSION = `^${_workspaceVersion2(EXTENSIBILITY_ESLINT_PLUGIN_PACKAGE_NAME)}`;
2201
+ var EXTENSIBILITY_ESLINT_PLUGIN_VERSION = `^${_workspaceVersion(EXTENSIBILITY_ESLINT_PLUGIN_PACKAGE_NAME)}`;
2072
2202
  var _rootWorkspaceTemplate = {
2073
2203
  generate: (params, context) => {
2074
2204
  const { fs: fs2 } = context;
@@ -2123,14 +2253,14 @@ var _rootWorkspaceTemplate = {
2123
2253
  path: "custom-objects/package.json",
2124
2254
  content: fs2.mustache(
2125
2255
  {
2126
- customObjectsVersion: _workspaceVersion2(
2256
+ customObjectsVersion: _workspaceVersion(
2127
2257
  "@stripe/extensibility-custom-objects"
2128
2258
  ),
2129
- sdkVersion: _workspaceVersion2("@stripe/extensibility-sdk"),
2130
- customObjectsToolsVersion: _workspaceVersion2(
2259
+ sdkVersion: _workspaceVersion("@stripe/extensibility-sdk"),
2260
+ customObjectsToolsVersion: _workspaceVersion(
2131
2261
  "@stripe/extensibility-custom-objects-tools"
2132
2262
  ),
2133
- testHelpersVersion: _workspaceVersion2("@stripe/extensibility-test-helpers")
2263
+ testHelpersVersion: _workspaceVersion("@stripe/extensibility-test-helpers")
2134
2264
  },
2135
2265
  "custom-objects",
2136
2266
  "package.json.mustache"
@@ -2142,6 +2272,16 @@ var _rootWorkspaceTemplate = {
2142
2272
  content: fs2.textFile("custom-objects/tsconfig.json"),
2143
2273
  precious: true
2144
2274
  },
2275
+ {
2276
+ path: "custom-objects/eslint.config.mts",
2277
+ content: fs2.textFile("custom-objects/eslint.config.mts"),
2278
+ precious: true
2279
+ },
2280
+ {
2281
+ path: "custom-objects/vitest.config.mts",
2282
+ content: fs2.textFile("custom-objects/vitest.config.mts"),
2283
+ precious: true
2284
+ },
2145
2285
  {
2146
2286
  path: "ui/package.json",
2147
2287
  content: fs2.textFile("ui/package.json"),
@@ -2168,7 +2308,7 @@ var _rootWorkspaceTemplate = {
2168
2308
  _devNpmDep("@types/node", "^20.19.0"),
2169
2309
  _devNpmDep(
2170
2310
  "@stripe/extensibility-dev-tools",
2171
- `^${_workspaceVersion2("@stripe/extensibility-dev-tools")}`
2311
+ `^${_workspaceVersion("@stripe/extensibility-dev-tools")}`
2172
2312
  ),
2173
2313
  _devNpmDep("concurrently", "^9.2.1"),
2174
2314
  _devNpmDep("eslint", "^9.0.0"),
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/root/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAoB,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAMhE,gBAAgB;AAChB,eAAO,MAAM,wCAAwC,wCACd,CAAC;AAExC,gBAAgB;AAChB,eAAO,MAAM,mCAAmC,QAAoE,CAAC;AAErH;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnE,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,qDAAqD;IACrD,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;QAC3B,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAC3B,CAAC;IACF,qDAAqD;IACrD,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC7C;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,CAC5C,oBAAoB,EACpB,oBAAoB,CAmIrB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,oEAGW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/root/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAoB,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAMhE,gBAAgB;AAChB,eAAO,MAAM,wCAAwC,wCACd,CAAC;AAExC,gBAAgB;AAChB,eAAO,MAAM,mCAAmC,QAAoE,CAAC;AAErH;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnE,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,qDAAqD;IACrD,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;QAC3B,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAC3B,CAAC;IACF,qDAAqD;IACrD,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC7C;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,CAC5C,oBAAoB,EACpB,oBAAoB,CA6IrB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,oEAGW,CAAC"}