Procházet zdrojové kódy

chore: Initial Lerna setup, move "server" into "core" package

Michael Bromley před 6 roky
rodič
revize
7170e42390
100 změnil soubory, kde provedl 140 přidání a 137 odebrání
  1. 8 12
      .gitignore
  2. 7 0
      lerna.json
  3. 3 1
      package.json
  4. 0 0
      packages/core/README.md
  5. 0 0
      packages/core/build/gulpfile.ts
  6. 0 0
      packages/core/build/tsconfig.build.json
  7. 0 0
      packages/core/build/tsconfig.cli.json
  8. 0 0
      packages/core/cli/assets/index.hbs
  9. 0 0
      packages/core/cli/assets/vendure-config.hbs
  10. 0 0
      packages/core/cli/cli-utils.ts
  11. 0 0
      packages/core/cli/init.ts
  12. 0 0
      packages/core/cli/populate.ts
  13. 0 0
      packages/core/cli/vendure-cli.ts
  14. 0 0
      packages/core/e2e/__data__/.gitkeep
  15. 0 0
      packages/core/e2e/__snapshots__/administrator.e2e-spec.ts.snap
  16. 0 0
      packages/core/e2e/__snapshots__/collection.e2e-spec.ts.snap
  17. 0 0
      packages/core/e2e/__snapshots__/facet.e2e-spec.ts.snap
  18. 0 0
      packages/core/e2e/__snapshots__/import.e2e-spec.ts.snap
  19. 0 0
      packages/core/e2e/__snapshots__/product.e2e-spec.ts.snap
  20. 0 0
      packages/core/e2e/__snapshots__/promotion.e2e-spec.ts.snap
  21. 0 0
      packages/core/e2e/__snapshots__/role.e2e-spec.ts.snap
  22. 1 1
      packages/core/e2e/administrator.e2e-spec.ts
  23. 2 2
      packages/core/e2e/auth.e2e-spec.ts
  24. 2 2
      packages/core/e2e/collection.e2e-spec.ts
  25. 0 0
      packages/core/e2e/config/jest-e2e.json
  26. 1 1
      packages/core/e2e/config/test-config.ts
  27. 0 0
      packages/core/e2e/config/testing-asset-preview-strategy.ts
  28. 0 0
      packages/core/e2e/config/testing-asset-storage-strategy.ts
  29. 0 0
      packages/core/e2e/config/testing-entity-id-strategy.ts
  30. 0 0
      packages/core/e2e/config/tsconfig.e2e.json
  31. 1 1
      packages/core/e2e/country.e2e-spec.ts
  32. 2 2
      packages/core/e2e/customer.e2e-spec.ts
  33. 1 1
      packages/core/e2e/default-search-plugin.e2e-spec.ts
  34. 1 1
      packages/core/e2e/entity-id-strategy.e2e-spec.ts
  35. 1 1
      packages/core/e2e/facet.e2e-spec.ts
  36. 0 0
      packages/core/e2e/fixtures/assets/alexandru-acea-686569-unsplash.jpg
  37. 0 0
      packages/core/e2e/fixtures/assets/box-of-12.jpg
  38. 0 0
      packages/core/e2e/fixtures/assets/box-of-8.jpg
  39. 0 0
      packages/core/e2e/fixtures/assets/derick-david-409858-unsplash.jpg
  40. 0 0
      packages/core/e2e/fixtures/assets/florian-olivo-1166419-unsplash.jpg
  41. 0 0
      packages/core/e2e/fixtures/assets/pps1.jpg
  42. 0 0
      packages/core/e2e/fixtures/assets/pps2.jpg
  43. 0 0
      packages/core/e2e/fixtures/assets/vincent-botta-736919-unsplash.jpg
  44. 1 1
      packages/core/e2e/fixtures/e2e-initial-data.ts
  45. 0 0
      packages/core/e2e/fixtures/e2e-products-collections.csv
  46. 0 0
      packages/core/e2e/fixtures/e2e-products-empty.csv
  47. 0 0
      packages/core/e2e/fixtures/e2e-products-full.csv
  48. 0 0
      packages/core/e2e/fixtures/e2e-products-minimal.csv
  49. 0 0
      packages/core/e2e/fixtures/product-import.csv
  50. 1 1
      packages/core/e2e/fixtures/test-plugins.ts
  51. 0 0
      packages/core/e2e/import.e2e-spec.ts
  52. 1 1
      packages/core/e2e/order.e2e-spec.ts
  53. 85 85
      packages/core/e2e/plugin.e2e-spec.ts
  54. 2 2
      packages/core/e2e/product.e2e-spec.ts
  55. 1 1
      packages/core/e2e/promotion.e2e-spec.ts
  56. 3 3
      packages/core/e2e/role.e2e-spec.ts
  57. 1 1
      packages/core/e2e/shop-auth.e2e-spec.ts
  58. 1 1
      packages/core/e2e/shop-customer.e2e-spec.ts
  59. 1 1
      packages/core/e2e/shop-order.e2e-spec.ts
  60. 0 0
      packages/core/e2e/test-client.ts
  61. 1 1
      packages/core/e2e/test-server.ts
  62. 0 0
      packages/core/e2e/test-utils.ts
  63. 1 1
      packages/core/e2e/zone.e2e-spec.ts
  64. 0 0
      packages/core/mock-data/assets/adam-birkett-239153-unsplash.jpg
  65. 0 0
      packages/core/mock-data/assets/alexandru-acea-686569-unsplash.jpg
  66. 0 0
      packages/core/mock-data/assets/brandi-redd-104140-unsplash.jpg
  67. 0 0
      packages/core/mock-data/assets/charles-deluvio-695736-unsplash.jpg
  68. 0 0
      packages/core/mock-data/assets/chuttersnap-584518-unsplash.jpg
  69. 0 0
      packages/core/mock-data/assets/derick-david-409858-unsplash.jpg
  70. 0 0
      packages/core/mock-data/assets/eniko-kis-663725-unsplash.jpg
  71. 0 0
      packages/core/mock-data/assets/florian-klauer-14840-unsplash.jpg
  72. 0 0
      packages/core/mock-data/assets/florian-olivo-1166419-unsplash.jpg
  73. 0 0
      packages/core/mock-data/assets/juan-gomez-674574-unsplash.jpg
  74. 0 0
      packages/core/mock-data/assets/mark-tegethoff-667351-unsplash.jpg
  75. 0 0
      packages/core/mock-data/assets/max-tarkhov-737999-unsplash.jpg
  76. 0 0
      packages/core/mock-data/assets/michael-guite-571169-unsplash.jpg
  77. 0 0
      packages/core/mock-data/assets/mikkel-bech-748940-unsplash.jpg
  78. 0 0
      packages/core/mock-data/assets/neonbrand-428982-unsplash.jpg
  79. 0 0
      packages/core/mock-data/assets/neslihan-gunaydin-3493-unsplash.jpg
  80. 0 0
      packages/core/mock-data/assets/nik-shuliahin-619349-unsplash.jpg
  81. 0 0
      packages/core/mock-data/assets/paul-weaver-1120584-unsplash.jpg
  82. 0 0
      packages/core/mock-data/assets/pierre-chatel-innocenti-483198-unsplash.jpg
  83. 0 0
      packages/core/mock-data/assets/robert-shunev-528016-unsplash.jpg
  84. 0 0
      packages/core/mock-data/assets/stoica-ionela-530966-unsplash.jpg
  85. 0 0
      packages/core/mock-data/assets/vincent-botta-736919-unsplash.jpg
  86. 0 0
      packages/core/mock-data/assets/vincent-liu-525429-unsplash.jpg
  87. 0 0
      packages/core/mock-data/assets/zoltan-kovacs-642412-unsplash.jpg
  88. 0 0
      packages/core/mock-data/assets/zoltan-tasi-423051-unsplash.jpg
  89. 0 0
      packages/core/mock-data/clear-all-tables.ts
  90. 1 1
      packages/core/mock-data/create-upload-post-data.spec.ts
  91. 0 0
      packages/core/mock-data/create-upload-post-data.ts
  92. 0 0
      packages/core/mock-data/data-sources/countries.json
  93. 1 1
      packages/core/mock-data/data-sources/initial-data.ts
  94. 0 0
      packages/core/mock-data/data-sources/products.csv
  95. 1 1
      packages/core/mock-data/get-default-channel-token.ts
  96. 1 1
      packages/core/mock-data/mock-data.service.ts
  97. 0 0
      packages/core/mock-data/populate-cli.ts
  98. 1 1
      packages/core/mock-data/populate.ts
  99. 2 2
      packages/core/mock-data/simple-graphql-client.ts
  100. 4 6
      packages/core/package.json

+ 8 - 12
.gitignore

@@ -120,7 +120,7 @@ artifacts/
 *.tlh
 *.tmp
 *.tmp_proj
-server/yarn-error.log
+packages/core/yarn-error.log
 *.vspscc
 *.vssscc
 .builds
@@ -222,10 +222,6 @@ PublishScripts/
 
 # NuGet Packages
 *.nupkg
-# The packages folder can be ignored because of Package Restore
-**/[Pp]ackages/*
-# except build/, which is used as an MSBuild target.
-!**/[Pp]ackages/build/
 # Uncomment if necessary however generally it will be regenerated when needed
 #!**/[Pp]ackages/repositories.config
 # NuGet v3's project.json files produces more ignorable files
@@ -387,13 +383,13 @@ Temporary Items
 docker-compose.yml
 .env
 dist
-server/e2e/__data__/*
-server/assets
-server/dist
-server/*.sqlite
-!server/e2e/__data__/.gitkeep
-server/test-emails
-server/src/email/preview/output
+packages/core/e2e/__data__/*
+packages/core/assets
+packages/core/dist
+packages/core/*.sqlite
+!packages/core/e2e/__data__/.gitkeep
+packages/core/test-emails
+packages/core/src/email/preview/output
 docs/resources/_gen/*
 docs/static/main.js*
 docs/static/main.css*

+ 7 - 0
lerna.json

@@ -0,0 +1,7 @@
+{
+  "packages": [
+    "packages/*"
+  ],
+  "version": "0.1.0-alpha.17",
+  "npmClient": "yarn"
+}

+ 3 - 1
package.json

@@ -15,7 +15,8 @@
     "lint:admin-ui": "cd admin-ui && yarn lint --fix",
     "precommit": "lint-staged",
     "postcommit": "git update-index --again",
-    "prepush": "yarn test && cd admin-ui && yarn build --prod"
+    "prepush": "yarn test && cd admin-ui && yarn build --prod",
+    "dev-server": "ts-node packages/dev-server/index"
   },
   "devDependencies": {
     "@types/graphql": "^14.0.5",
@@ -32,6 +33,7 @@
     "graphql-tools": "^4.0.0",
     "husky": "^0.14.3",
     "klaw-sync": "^6.0.0",
+    "lerna": "^3.13.1",
     "lint-staged": "^7.2.0",
     "prettier": "^1.15.2",
     "ts-node": "^7.0.1",

+ 0 - 0
server/README.md → packages/core/README.md


+ 0 - 0
server/build/gulpfile.ts → packages/core/build/gulpfile.ts


+ 0 - 0
server/build/tsconfig.build.json → packages/core/build/tsconfig.build.json


+ 0 - 0
server/build/tsconfig.cli.json → packages/core/build/tsconfig.cli.json


+ 0 - 0
server/cli/assets/index.hbs → packages/core/cli/assets/index.hbs


+ 0 - 0
server/cli/assets/vendure-config.hbs → packages/core/cli/assets/vendure-config.hbs


+ 0 - 0
server/cli/cli-utils.ts → packages/core/cli/cli-utils.ts


+ 0 - 0
server/cli/init.ts → packages/core/cli/init.ts


+ 0 - 0
server/cli/populate.ts → packages/core/cli/populate.ts


+ 0 - 0
server/cli/vendure-cli.ts → packages/core/cli/vendure-cli.ts


+ 0 - 0
server/e2e/__data__/.gitkeep → packages/core/e2e/__data__/.gitkeep


+ 0 - 0
server/e2e/__snapshots__/administrator.e2e-spec.ts.snap → packages/core/e2e/__snapshots__/administrator.e2e-spec.ts.snap


+ 0 - 0
server/e2e/__snapshots__/collection.e2e-spec.ts.snap → packages/core/e2e/__snapshots__/collection.e2e-spec.ts.snap


+ 0 - 0
server/e2e/__snapshots__/facet.e2e-spec.ts.snap → packages/core/e2e/__snapshots__/facet.e2e-spec.ts.snap


+ 0 - 0
server/e2e/__snapshots__/import.e2e-spec.ts.snap → packages/core/e2e/__snapshots__/import.e2e-spec.ts.snap


+ 0 - 0
server/e2e/__snapshots__/product.e2e-spec.ts.snap → packages/core/e2e/__snapshots__/product.e2e-spec.ts.snap


+ 0 - 0
server/e2e/__snapshots__/promotion.e2e-spec.ts.snap → packages/core/e2e/__snapshots__/promotion.e2e-spec.ts.snap


+ 0 - 0
server/e2e/__snapshots__/role.e2e-spec.ts.snap → packages/core/e2e/__snapshots__/role.e2e-spec.ts.snap


+ 1 - 1
server/e2e/administrator.e2e-spec.ts → packages/core/e2e/administrator.e2e-spec.ts

@@ -12,7 +12,7 @@ import {
     GetAdministrator,
     GetAdministrators,
     UpdateAdministrator,
-} from '../../shared/generated-types';
+} from '../../../shared/generated-types';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient } from './test-client';

+ 2 - 2
server/e2e/auth.e2e-spec.ts → packages/core/e2e/auth.e2e-spec.ts

@@ -19,8 +19,8 @@ import {
     LoginMutationArgs,
     Permission,
     UpdateProductMutationArgs,
-} from '../../shared/generated-types';
-import { SUPER_ADMIN_USER_IDENTIFIER, SUPER_ADMIN_USER_PASSWORD } from '../../shared/shared-constants';
+} from '../../../shared/generated-types';
+import { SUPER_ADMIN_USER_IDENTIFIER, SUPER_ADMIN_USER_PASSWORD } from '../../../shared/shared-constants';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient } from './test-client';

+ 2 - 2
server/e2e/collection.e2e-spec.ts → packages/core/e2e/collection.e2e-spec.ts

@@ -29,8 +29,8 @@ import {
     UpdateCollection,
     UpdateProduct,
     UpdateProductVariants,
-} from '../../shared/generated-types';
-import { ROOT_COLLECTION_NAME } from '../../shared/shared-constants';
+} from '../../../shared/generated-types';
+import { ROOT_COLLECTION_NAME } from '../../../shared/shared-constants';
 import { facetValueCollectionFilter } from '../src/config/collection/default-collection-filters';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';

+ 0 - 0
server/e2e/config/jest-e2e.json → packages/core/e2e/config/jest-e2e.json


+ 1 - 1
server/e2e/config/test-config.ts → packages/core/e2e/config/test-config.ts

@@ -1,6 +1,6 @@
 import path from 'path';
 
-import { ADMIN_API_PATH, SHOP_API_PATH } from '../../../shared/shared-constants';
+import { ADMIN_API_PATH, SHOP_API_PATH } from '../../../../shared/shared-constants';
 import { DefaultAssetNamingStrategy } from '../../src/config/asset-naming-strategy/default-asset-naming-strategy';
 import { VendureConfig } from '../../src/config/vendure-config';
 

+ 0 - 0
server/e2e/config/testing-asset-preview-strategy.ts → packages/core/e2e/config/testing-asset-preview-strategy.ts


+ 0 - 0
server/e2e/config/testing-asset-storage-strategy.ts → packages/core/e2e/config/testing-asset-storage-strategy.ts


+ 0 - 0
server/e2e/config/testing-entity-id-strategy.ts → packages/core/e2e/config/testing-entity-id-strategy.ts


+ 0 - 0
server/e2e/config/tsconfig.e2e.json → packages/core/e2e/config/tsconfig.e2e.json


+ 1 - 1
server/e2e/country.e2e-spec.ts → packages/core/e2e/country.e2e-spec.ts

@@ -14,7 +14,7 @@ import {
     GetCountryList,
     LanguageCode,
     UpdateCountry,
-} from '../../shared/generated-types';
+} from '../../../shared/generated-types';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient } from './test-client';

+ 2 - 2
server/e2e/customer.e2e-spec.ts → packages/core/e2e/customer.e2e-spec.ts

@@ -15,8 +15,8 @@ import {
     GetCustomerList,
     UpdateCustomer,
     UpdateCustomerAddress,
-} from '../../shared/generated-types';
-import { omit } from '../../shared/omit';
+} from '../../../shared/generated-types';
+import { omit } from '../../../shared/omit';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient, TestShopClient } from './test-client';

+ 1 - 1
server/e2e/default-search-plugin.e2e-spec.ts → packages/core/e2e/default-search-plugin.e2e-spec.ts

@@ -16,7 +16,7 @@ import {
     UpdateCollection,
     UpdateProduct,
     UpdateTaxRate,
-} from '../../shared/generated-types';
+} from '../../../shared/generated-types';
 import { SimpleGraphQLClient } from '../mock-data/simple-graphql-client';
 import { facetValueCollectionFilter } from '../src/config/collection/default-collection-filters';
 import { DefaultSearchPlugin } from '../src/plugin/default-search-plugin/default-search-plugin';

+ 1 - 1
server/e2e/entity-id-strategy.e2e-spec.ts → packages/core/e2e/entity-id-strategy.e2e-spec.ts

@@ -2,7 +2,7 @@ import gql from 'graphql-tag';
 import path from 'path';
 
 import { CREATE_FACET } from '../../admin-ui/src/app/data/definitions/facet-definitions';
-import { CreateFacet, LanguageCode } from '../../shared/generated-types';
+import { CreateFacet, LanguageCode } from '../../../shared/generated-types';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestShopClient } from './test-client';

+ 1 - 1
server/e2e/facet.e2e-spec.ts → packages/core/e2e/facet.e2e-spec.ts

@@ -29,7 +29,7 @@ import {
     UpdateFacetValues,
     UpdateProduct,
     UpdateProductVariants,
-} from '../../shared/generated-types';
+} from '../../../shared/generated-types';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient } from './test-client';

+ 0 - 0
server/e2e/fixtures/assets/alexandru-acea-686569-unsplash.jpg → packages/core/e2e/fixtures/assets/alexandru-acea-686569-unsplash.jpg


+ 0 - 0
server/e2e/fixtures/assets/box-of-12.jpg → packages/core/e2e/fixtures/assets/box-of-12.jpg


+ 0 - 0
server/e2e/fixtures/assets/box-of-8.jpg → packages/core/e2e/fixtures/assets/box-of-8.jpg


+ 0 - 0
server/e2e/fixtures/assets/derick-david-409858-unsplash.jpg → packages/core/e2e/fixtures/assets/derick-david-409858-unsplash.jpg


+ 0 - 0
server/e2e/fixtures/assets/florian-olivo-1166419-unsplash.jpg → packages/core/e2e/fixtures/assets/florian-olivo-1166419-unsplash.jpg


+ 0 - 0
server/e2e/fixtures/assets/pps1.jpg → packages/core/e2e/fixtures/assets/pps1.jpg


+ 0 - 0
server/e2e/fixtures/assets/pps2.jpg → packages/core/e2e/fixtures/assets/pps2.jpg


+ 0 - 0
server/e2e/fixtures/assets/vincent-botta-736919-unsplash.jpg → packages/core/e2e/fixtures/assets/vincent-botta-736919-unsplash.jpg


+ 1 - 1
server/e2e/fixtures/e2e-initial-data.ts → packages/core/e2e/fixtures/e2e-initial-data.ts

@@ -1,4 +1,4 @@
-import { LanguageCode } from '../../../shared/generated-types';
+import { LanguageCode } from '../../../../shared/generated-types';
 import { InitialData } from '../../src/data-import';
 
 export const initialData: InitialData = {

+ 0 - 0
server/e2e/fixtures/e2e-products-collections.csv → packages/core/e2e/fixtures/e2e-products-collections.csv


+ 0 - 0
server/e2e/fixtures/e2e-products-empty.csv → packages/core/e2e/fixtures/e2e-products-empty.csv


+ 0 - 0
server/e2e/fixtures/e2e-products-full.csv → packages/core/e2e/fixtures/e2e-products-full.csv


+ 0 - 0
server/e2e/fixtures/e2e-products-minimal.csv → packages/core/e2e/fixtures/e2e-products-minimal.csv


+ 0 - 0
server/e2e/fixtures/product-import.csv → packages/core/e2e/fixtures/product-import.csv


+ 1 - 1
server/e2e/fixtures/test-plugins.ts → packages/core/e2e/fixtures/test-plugins.ts

@@ -1,7 +1,7 @@
 import { Query, Resolver } from '@nestjs/graphql';
 import gql from 'graphql-tag';
 
-import { LanguageCode } from '../../../shared/generated-types';
+import { LanguageCode } from '../../../../shared/generated-types';
 import { APIExtensionDefinition, InjectorFn, VendureConfig, VendurePlugin } from '../../src/config';
 import { ConfigService } from '../../src/config/config.service';
 

+ 0 - 0
server/e2e/import.e2e-spec.ts → packages/core/e2e/import.e2e-spec.ts


+ 1 - 1
server/e2e/order.e2e-spec.ts → packages/core/e2e/order.e2e-spec.ts

@@ -4,7 +4,7 @@ import path from 'path';
 
 import { GET_CUSTOMER_LIST } from '../../admin-ui/src/app/data/definitions/customer-definitions';
 import { GET_ORDER, GET_ORDERS_LIST } from '../../admin-ui/src/app/data/definitions/order-definitions';
-import { GetCustomerList, GetOrder, GetOrderList } from '../../shared/generated-types';
+import { GetCustomerList, GetOrder, GetOrderList } from '../../../shared/generated-types';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient, TestShopClient } from './test-client';

+ 85 - 85
server/e2e/plugin.e2e-spec.ts → packages/core/e2e/plugin.e2e-spec.ts

@@ -1,85 +1,85 @@
-import gql from 'graphql-tag';
-import path from 'path';
-
-import { LanguageCode } from '../../shared/generated-types';
-import { ConfigService } from '../src/config/config.service';
-
-import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
-import {
-    TestAPIExtensionPlugin,
-    TestPluginWithConfigAndBootstrap,
-    TestPluginWithOnClose,
-    TestPluginWithProvider,
-} from './fixtures/test-plugins';
-import { TestAdminClient, TestShopClient } from './test-client';
-import { TestServer } from './test-server';
-
-describe('Plugins', () => {
-    const adminClient = new TestAdminClient();
-    const shopClient = new TestShopClient();
-    const server = new TestServer();
-    const bootstrapMockFn = jest.fn();
-    const onCloseFn = jest.fn();
-
-    beforeAll(async () => {
-        const token = await server.init(
-            {
-                productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
-                customerCount: 1,
-            },
-            {
-                plugins: [
-                    new TestPluginWithConfigAndBootstrap(bootstrapMockFn),
-                    new TestAPIExtensionPlugin(),
-                    new TestPluginWithProvider(),
-                    new TestPluginWithOnClose(onCloseFn),
-                ],
-            },
-        );
-        await adminClient.init();
-        await shopClient.init();
-    }, TEST_SETUP_TIMEOUT_MS);
-
-    afterAll(async () => {
-        await server.destroy();
-    });
-
-    it('can modify the config in configure() and inject in onBootstrap()', () => {
-        expect(bootstrapMockFn).toHaveBeenCalled();
-        const configService: ConfigService = bootstrapMockFn.mock.calls[0][0];
-        expect(configService instanceof ConfigService).toBe(true);
-        expect(configService.defaultLanguageCode).toBe(LanguageCode.zh);
-    });
-
-    it('extends the admin API', async () => {
-        const result = await adminClient.query(gql`
-            query {
-                foo
-            }
-        `);
-        expect(result.foo).toEqual(['bar']);
-    });
-
-    it('extends the shop API', async () => {
-        const result = await shopClient.query(gql`
-            query {
-                baz
-            }
-        `);
-        expect(result.baz).toEqual(['quux']);
-    });
-
-    it('DI works with defined providers', async () => {
-        const result = await shopClient.query(gql`
-            query {
-                names
-            }
-        `);
-        expect(result.names).toEqual(['seon', 'linda', 'hong']);
-    });
-
-    it('calls onClose method when app is closed', async () => {
-        await server.destroy();
-        expect(onCloseFn).toHaveBeenCalled();
-    });
-});
+import gql from 'graphql-tag';
+import path from 'path';
+
+import { LanguageCode } from '../../../shared/generated-types';
+import { ConfigService } from '../src/config/config.service';
+
+import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
+import {
+    TestAPIExtensionPlugin,
+    TestPluginWithConfigAndBootstrap,
+    TestPluginWithOnClose,
+    TestPluginWithProvider,
+} from './fixtures/test-plugins';
+import { TestAdminClient, TestShopClient } from './test-client';
+import { TestServer } from './test-server';
+
+describe('Plugins', () => {
+    const adminClient = new TestAdminClient();
+    const shopClient = new TestShopClient();
+    const server = new TestServer();
+    const bootstrapMockFn = jest.fn();
+    const onCloseFn = jest.fn();
+
+    beforeAll(async () => {
+        const token = await server.init(
+            {
+                productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
+                customerCount: 1,
+            },
+            {
+                plugins: [
+                    new TestPluginWithConfigAndBootstrap(bootstrapMockFn),
+                    new TestAPIExtensionPlugin(),
+                    new TestPluginWithProvider(),
+                    new TestPluginWithOnClose(onCloseFn),
+                ],
+            },
+        );
+        await adminClient.init();
+        await shopClient.init();
+    }, TEST_SETUP_TIMEOUT_MS);
+
+    afterAll(async () => {
+        await server.destroy();
+    });
+
+    it('can modify the config in configure() and inject in onBootstrap()', () => {
+        expect(bootstrapMockFn).toHaveBeenCalled();
+        const configService: ConfigService = bootstrapMockFn.mock.calls[0][0];
+        expect(configService instanceof ConfigService).toBe(true);
+        expect(configService.defaultLanguageCode).toBe(LanguageCode.zh);
+    });
+
+    it('extends the admin API', async () => {
+        const result = await adminClient.query(gql`
+            query {
+                foo
+            }
+        `);
+        expect(result.foo).toEqual(['bar']);
+    });
+
+    it('extends the shop API', async () => {
+        const result = await shopClient.query(gql`
+            query {
+                baz
+            }
+        `);
+        expect(result.baz).toEqual(['quux']);
+    });
+
+    it('DI works with defined providers', async () => {
+        const result = await shopClient.query(gql`
+            query {
+                names
+            }
+        `);
+        expect(result.names).toEqual(['seon', 'linda', 'hong']);
+    });
+
+    it('calls onClose method when app is closed', async () => {
+        await server.destroy();
+        expect(onCloseFn).toHaveBeenCalled();
+    });
+});

+ 2 - 2
server/e2e/product.e2e-spec.ts → packages/core/e2e/product.e2e-spec.ts

@@ -26,8 +26,8 @@ import {
     SortOrder,
     UpdateProduct,
     UpdateProductVariants,
-} from '../../shared/generated-types';
-import { omit } from '../../shared/omit';
+} from '../../../shared/generated-types';
+import { omit } from '../../../shared/omit';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient } from './test-client';

+ 1 - 1
server/e2e/promotion.e2e-spec.ts → packages/core/e2e/promotion.e2e-spec.ts

@@ -17,7 +17,7 @@ import {
     GetPromotionList,
     Promotion,
     UpdatePromotion,
-} from '../../shared/generated-types';
+} from '../../../shared/generated-types';
 import { pick } from '../../shared/pick';
 import { PromotionAction, PromotionOrderAction } from '../src/config/promotion/promotion-action';
 import { PromotionCondition } from '../src/config/promotion/promotion-condition';

+ 3 - 3
server/e2e/role.e2e-spec.ts → packages/core/e2e/role.e2e-spec.ts

@@ -6,9 +6,9 @@ import {
     GET_ROLES,
     UPDATE_ROLE,
 } from '../../admin-ui/src/app/data/definitions/administrator-definitions';
-import { CreateRole, GetRole, GetRoles, Permission, Role, UpdateRole } from '../../shared/generated-types';
-import { omit } from '../../shared/omit';
-import { CUSTOMER_ROLE_CODE, SUPER_ADMIN_ROLE_CODE } from '../../shared/shared-constants';
+import { CreateRole, GetRole, GetRoles, Permission, Role, UpdateRole } from '../../../shared/generated-types';
+import { omit } from '../../../shared/omit';
+import { CUSTOMER_ROLE_CODE, SUPER_ADMIN_ROLE_CODE } from '../../../shared/shared-constants';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient } from './test-client';

+ 1 - 1
server/e2e/shop-auth.e2e-spec.ts → packages/core/e2e/shop-auth.e2e-spec.ts

@@ -9,7 +9,7 @@ import {
 } from '../../admin-ui/src/app/data/definitions/administrator-definitions';
 import { GET_CUSTOMER } from '../../admin-ui/src/app/data/definitions/customer-definitions';
 import { RegisterCustomerInput } from '../../shared/generated-shop-types';
-import { CreateAdministrator, CreateRole, GetCustomer, Permission } from '../../shared/generated-types';
+import { CreateAdministrator, CreateRole, GetCustomer, Permission } from '../../../shared/generated-types';
 import { NoopEmailGenerator } from '../src/config/email/noop-email-generator';
 import { defaultEmailTypes } from '../src/email/default-email-types';
 

+ 1 - 1
server/e2e/shop-customer.e2e-spec.ts → packages/core/e2e/shop-customer.e2e-spec.ts

@@ -12,7 +12,7 @@ import {
     UpdateAddressInput,
     UpdateCustomerInput,
 } from '../../shared/generated-shop-types';
-import { AttemptLogin, GetCustomer } from '../../shared/generated-types';
+import { AttemptLogin, GetCustomer } from '../../../shared/generated-types';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient, TestShopClient } from './test-client';

+ 1 - 1
server/e2e/shop-order.e2e-spec.ts → packages/core/e2e/shop-order.e2e-spec.ts

@@ -16,7 +16,7 @@ import {
     GetCustomer,
     GetCustomerList,
     UpdateCountry,
-} from '../../shared/generated-types';
+} from '../../../shared/generated-types';
 import { PaymentMethodHandler } from '../src/config/payment-method/payment-method-handler';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';

+ 0 - 0
server/e2e/test-client.ts → packages/core/e2e/test-client.ts


+ 1 - 1
server/e2e/test-server.ts → packages/core/e2e/test-server.ts

@@ -5,7 +5,7 @@ import path from 'path';
 import { ConnectionOptions } from 'typeorm';
 import { SqljsConnectionOptions } from 'typeorm/driver/sqljs/SqljsConnectionOptions';
 
-import { Omit } from '../../shared/omit';
+import { Omit } from '../../../shared/omit';
 import { populate, PopulateOptions } from '../mock-data/populate';
 import { preBootstrapConfig, runPluginOnBootstrapMethods } from '../src/bootstrap';
 import { Mutable } from '../src/common/types/common-types';

+ 0 - 0
server/e2e/test-utils.ts → packages/core/e2e/test-utils.ts


+ 1 - 1
server/e2e/zone.e2e-spec.ts → packages/core/e2e/zone.e2e-spec.ts

@@ -17,7 +17,7 @@ import {
     GetZone,
     RemoveMembersFromZone,
     UpdateZone,
-} from '../../shared/generated-types';
+} from '../../../shared/generated-types';
 
 import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
 import { TestAdminClient } from './test-client';

+ 0 - 0
server/mock-data/assets/adam-birkett-239153-unsplash.jpg → packages/core/mock-data/assets/adam-birkett-239153-unsplash.jpg


+ 0 - 0
server/mock-data/assets/alexandru-acea-686569-unsplash.jpg → packages/core/mock-data/assets/alexandru-acea-686569-unsplash.jpg


+ 0 - 0
server/mock-data/assets/brandi-redd-104140-unsplash.jpg → packages/core/mock-data/assets/brandi-redd-104140-unsplash.jpg


+ 0 - 0
server/mock-data/assets/charles-deluvio-695736-unsplash.jpg → packages/core/mock-data/assets/charles-deluvio-695736-unsplash.jpg


+ 0 - 0
server/mock-data/assets/chuttersnap-584518-unsplash.jpg → packages/core/mock-data/assets/chuttersnap-584518-unsplash.jpg


+ 0 - 0
server/mock-data/assets/derick-david-409858-unsplash.jpg → packages/core/mock-data/assets/derick-david-409858-unsplash.jpg


+ 0 - 0
server/mock-data/assets/eniko-kis-663725-unsplash.jpg → packages/core/mock-data/assets/eniko-kis-663725-unsplash.jpg


+ 0 - 0
server/mock-data/assets/florian-klauer-14840-unsplash.jpg → packages/core/mock-data/assets/florian-klauer-14840-unsplash.jpg


+ 0 - 0
server/mock-data/assets/florian-olivo-1166419-unsplash.jpg → packages/core/mock-data/assets/florian-olivo-1166419-unsplash.jpg


+ 0 - 0
server/mock-data/assets/juan-gomez-674574-unsplash.jpg → packages/core/mock-data/assets/juan-gomez-674574-unsplash.jpg


+ 0 - 0
server/mock-data/assets/mark-tegethoff-667351-unsplash.jpg → packages/core/mock-data/assets/mark-tegethoff-667351-unsplash.jpg


+ 0 - 0
server/mock-data/assets/max-tarkhov-737999-unsplash.jpg → packages/core/mock-data/assets/max-tarkhov-737999-unsplash.jpg


+ 0 - 0
server/mock-data/assets/michael-guite-571169-unsplash.jpg → packages/core/mock-data/assets/michael-guite-571169-unsplash.jpg


+ 0 - 0
server/mock-data/assets/mikkel-bech-748940-unsplash.jpg → packages/core/mock-data/assets/mikkel-bech-748940-unsplash.jpg


+ 0 - 0
server/mock-data/assets/neonbrand-428982-unsplash.jpg → packages/core/mock-data/assets/neonbrand-428982-unsplash.jpg


+ 0 - 0
server/mock-data/assets/neslihan-gunaydin-3493-unsplash.jpg → packages/core/mock-data/assets/neslihan-gunaydin-3493-unsplash.jpg


+ 0 - 0
server/mock-data/assets/nik-shuliahin-619349-unsplash.jpg → packages/core/mock-data/assets/nik-shuliahin-619349-unsplash.jpg


+ 0 - 0
server/mock-data/assets/paul-weaver-1120584-unsplash.jpg → packages/core/mock-data/assets/paul-weaver-1120584-unsplash.jpg


+ 0 - 0
server/mock-data/assets/pierre-chatel-innocenti-483198-unsplash.jpg → packages/core/mock-data/assets/pierre-chatel-innocenti-483198-unsplash.jpg


+ 0 - 0
server/mock-data/assets/robert-shunev-528016-unsplash.jpg → packages/core/mock-data/assets/robert-shunev-528016-unsplash.jpg


+ 0 - 0
server/mock-data/assets/stoica-ionela-530966-unsplash.jpg → packages/core/mock-data/assets/stoica-ionela-530966-unsplash.jpg


+ 0 - 0
server/mock-data/assets/vincent-botta-736919-unsplash.jpg → packages/core/mock-data/assets/vincent-botta-736919-unsplash.jpg


+ 0 - 0
server/mock-data/assets/vincent-liu-525429-unsplash.jpg → packages/core/mock-data/assets/vincent-liu-525429-unsplash.jpg


+ 0 - 0
server/mock-data/assets/zoltan-kovacs-642412-unsplash.jpg → packages/core/mock-data/assets/zoltan-kovacs-642412-unsplash.jpg


+ 0 - 0
server/mock-data/assets/zoltan-tasi-423051-unsplash.jpg → packages/core/mock-data/assets/zoltan-tasi-423051-unsplash.jpg


+ 0 - 0
server/mock-data/clear-all-tables.ts → packages/core/mock-data/clear-all-tables.ts


+ 1 - 1
server/mock-data/create-upload-post-data.spec.ts → packages/core/mock-data/create-upload-post-data.spec.ts

@@ -1,6 +1,6 @@
 import gql from 'graphql-tag';
 
-import { CREATE_ASSETS } from '../../admin-ui/src/app/data/definitions/product-definitions';
+import { CREATE_ASSETS } from '../../../admin-ui/src/app/data/definitions/product-definitions';
 
 import { createUploadPostData } from './create-upload-post-data';
 

+ 0 - 0
server/mock-data/create-upload-post-data.ts → packages/core/mock-data/create-upload-post-data.ts


+ 0 - 0
server/mock-data/data-sources/countries.json → packages/core/mock-data/data-sources/countries.json


+ 1 - 1
server/mock-data/data-sources/initial-data.ts → packages/core/mock-data/data-sources/initial-data.ts

@@ -1,4 +1,4 @@
-import { LanguageCode } from '../../../shared/generated-types';
+import { LanguageCode } from '../../../../shared/generated-types';
 import { InitialData } from '../../src/data-import';
 
 export const initialData: InitialData = {

+ 0 - 0
server/mock-data/data-sources/products.csv → packages/core/mock-data/data-sources/products.csv


+ 1 - 1
server/mock-data/get-default-channel-token.ts → packages/core/mock-data/get-default-channel-token.ts

@@ -1,6 +1,6 @@
 import { ConnectionOptions, getConnection } from 'typeorm';
 
-import { DEFAULT_CHANNEL_CODE } from '../../shared/shared-constants';
+import { DEFAULT_CHANNEL_CODE } from '../../../shared/shared-constants';
 import { Channel } from '../src/entity/channel/channel.entity';
 
 // tslint:disable:no-console

+ 1 - 1
server/mock-data/mock-data.service.ts → packages/core/mock-data/mock-data.service.ts

@@ -12,7 +12,7 @@ import {
     CurrencyCode,
     LanguageCode,
     ProductVariant,
-} from '../../shared/generated-types';
+} from '../../../shared/generated-types';
 import { defaultShippingCalculator } from '../src/config/shipping-method/default-shipping-calculator';
 import { defaultShippingEligibilityChecker } from '../src/config/shipping-method/default-shipping-eligibility-checker';
 import { Customer } from '../src/entity/customer/customer.entity';

+ 0 - 0
server/mock-data/populate-cli.ts → packages/core/mock-data/populate-cli.ts


+ 1 - 1
server/mock-data/populate.ts → packages/core/mock-data/populate.ts

@@ -3,7 +3,7 @@ import { INestApplication } from '@nestjs/common';
 import fs from 'fs-extra';
 import path from 'path';
 
-import { LanguageCode } from '../../shared/generated-types';
+import { LanguageCode } from '../../../shared/generated-types';
 import { VendureBootstrapFunction } from '../src/bootstrap';
 import { setConfig } from '../src/config/config-helpers';
 import { VendureConfig } from '../src/config/vendure-config';

+ 2 - 2
server/mock-data/simple-graphql-client.ts → packages/core/mock-data/simple-graphql-client.ts

@@ -5,8 +5,8 @@ import { print } from 'graphql/language/printer';
 import { Curl } from 'node-libcurl';
 
 import { CREATE_ASSETS } from '../../admin-ui/src/app/data/definitions/product-definitions';
-import { CreateAssets, ImportInfo } from '../../shared/generated-types';
-import { SUPER_ADMIN_USER_IDENTIFIER, SUPER_ADMIN_USER_PASSWORD } from '../../shared/shared-constants';
+import { CreateAssets, ImportInfo } from '../../../shared/generated-types';
+import { SUPER_ADMIN_USER_IDENTIFIER, SUPER_ADMIN_USER_PASSWORD } from '../../../shared/shared-constants';
 import { getConfig } from '../src/config/config-helpers';
 
 import { createUploadPostData } from './create-upload-post-data';

+ 4 - 6
server/package.json → packages/core/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@vendure/core",
-  "version": "0.1.0-alpha.16",
+  "version": "1.0.0",
   "description": "A modern, headless ecommerce framework",
   "repository": {
     "type": "git",
@@ -17,8 +17,6 @@
   "private": false,
   "license": "MIT",
   "scripts": {
-    "populate": "node -r ts-node/register mock-data/populate-cli.ts",
-    "start:dev": "nodemon --config nodemon-debug.json",
     "lint": "tslint --project tsconfig.json -c tslint.json",
     "test": "jest --runInBand",
     "test:watch": "jest --watch",
@@ -30,6 +28,7 @@
     "publish:alpha": "yarn build && npm publish --access public --tag alpha"
   },
   "main": "dist/server/src/index.js",
+  "types": "dist/server/src/index.d.ts",
   "bin": {
     "vendure": "dist/cli/vendure-cli.js"
   },
@@ -101,7 +100,6 @@
     "gulp": "^4.0.0",
     "jest": "^23.6.0",
     "node-libcurl": "^1.3.3",
-    "nodemon": "^1.18.9",
     "opn": "^5.4.0",
     "pg": "^7.8.0",
     "rimraf": "^2.6.3",
@@ -116,11 +114,11 @@
       "ts"
     ],
     "moduleNameMapper": {
-      "shared/(.*)": "<rootDir>/../shared/$1.ts"
+      "shared/(.*)": "<rootDir>/../../shared/$1.ts"
     },
     "roots": [
       "src",
-      "../shared",
+      "../../shared",
       "mock-data"
     ],
     "transform": {

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů