disco_app 0.15.2 → 0.18.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.
- checksums.yaml +4 -4
- data/Rakefile +1 -5
- data/app/clients/disco_app/api_client.rb +25 -19
- data/app/clients/disco_app/graphql_client.rb +85 -0
- data/app/controllers/disco_app/admin/app_settings_controller.rb +2 -0
- data/app/controllers/disco_app/admin/application_controller.rb +1 -0
- data/app/controllers/disco_app/admin/concerns/app_settings_controller.rb +2 -1
- data/app/controllers/disco_app/admin/concerns/authenticated_controller.rb +5 -3
- data/app/controllers/disco_app/admin/concerns/plans_controller.rb +3 -2
- data/app/controllers/disco_app/admin/concerns/shops_controller.rb +1 -0
- data/app/controllers/disco_app/admin/concerns/sources_controller.rb +2 -1
- data/app/controllers/disco_app/admin/concerns/subscriptions_controller.rb +3 -2
- data/app/controllers/disco_app/admin/plans_controller.rb +2 -0
- data/app/controllers/disco_app/admin/resources/shops_controller.rb +2 -0
- data/app/controllers/disco_app/admin/shops_controller.rb +2 -0
- data/app/controllers/disco_app/admin/sources_controller.rb +2 -0
- data/app/controllers/disco_app/admin/subscriptions_controller.rb +2 -0
- data/app/controllers/disco_app/charges_controller.rb +6 -7
- data/app/controllers/disco_app/concerns/app_proxy_controller.rb +6 -6
- data/app/controllers/disco_app/concerns/authenticated_controller.rb +26 -27
- data/app/controllers/disco_app/concerns/carrier_request_controller.rb +22 -11
- data/app/controllers/disco_app/concerns/user_authenticated_controller.rb +1 -0
- data/app/controllers/disco_app/concerns/webhooks_controller.rb +13 -12
- data/app/controllers/disco_app/flow/actions_controller.rb +9 -0
- data/app/controllers/disco_app/flow/concerns/actions_controller.rb +23 -0
- data/app/controllers/disco_app/flow/concerns/trigger_usage_controller.rb +29 -0
- data/app/controllers/disco_app/flow/concerns/verifies_flow_payload.rb +39 -0
- data/app/controllers/disco_app/flow/trigger_usage_controller.rb +9 -0
- data/app/controllers/disco_app/frame_controller.rb +0 -1
- data/app/controllers/disco_app/install_controller.rb +3 -6
- data/app/controllers/disco_app/subscriptions_controller.rb +12 -4
- data/app/controllers/disco_app/user_sessions_controller.rb +1 -0
- data/app/controllers/disco_app/webhooks_controller.rb +2 -0
- data/app/controllers/sessions_controller.rb +5 -6
- data/app/helpers/disco_app/application_helper.rb +7 -7
- data/app/jobs/disco_app/app_installed_job.rb +2 -0
- data/app/jobs/disco_app/app_uninstalled_job.rb +2 -0
- data/app/jobs/disco_app/concerns/app_installed_job.rb +2 -3
- data/app/jobs/disco_app/concerns/app_uninstalled_job.rb +2 -1
- data/app/jobs/disco_app/concerns/customers_data_request_job.rb +13 -0
- data/app/jobs/disco_app/concerns/customers_redact_job.rb +13 -0
- data/app/jobs/disco_app/concerns/render_asset_group_job.rb +1 -0
- data/app/jobs/disco_app/concerns/shop_redact_job.rb +13 -0
- data/app/jobs/disco_app/concerns/shop_update_job.rb +9 -2
- data/app/jobs/disco_app/concerns/subscription_changed_job.rb +2 -1
- data/app/jobs/disco_app/concerns/synchronise_carrier_service_job.rb +8 -7
- data/app/jobs/disco_app/concerns/synchronise_resources_job.rb +1 -0
- data/app/jobs/disco_app/concerns/synchronise_users_job.rb +6 -3
- data/app/jobs/disco_app/concerns/synchronise_webhooks_job.rb +24 -11
- data/app/jobs/disco_app/customers_data_request_job.rb +5 -0
- data/app/jobs/disco_app/customers_redact_job.rb +5 -0
- data/app/jobs/disco_app/flow/process_action_job.rb +11 -0
- data/app/jobs/disco_app/flow/process_trigger_job.rb +11 -0
- data/app/jobs/disco_app/render_asset_group_job.rb +2 -0
- data/app/jobs/disco_app/shop_job.rb +10 -10
- data/app/jobs/disco_app/shop_redact_job.rb +5 -0
- data/app/jobs/disco_app/shop_update_job.rb +2 -0
- data/app/jobs/disco_app/subscription_changed_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_carrier_service_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_resources_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_users_job.rb +2 -0
- data/app/jobs/disco_app/synchronise_webhooks_job.rb +2 -0
- data/app/models/application_record.rb +2 -0
- data/app/models/disco_app/app_settings.rb +2 -0
- data/app/models/disco_app/application_charge.rb +1 -1
- data/app/models/disco_app/concerns/app_settings.rb +2 -0
- data/app/models/disco_app/concerns/can_be_liquified.rb +29 -14
- data/app/models/disco_app/concerns/has_metafields.rb +1 -2
- data/app/models/disco_app/concerns/plan.rb +3 -4
- data/app/models/disco_app/concerns/plan_code.rb +1 -2
- data/app/models/disco_app/concerns/renders_assets.rb +15 -21
- data/app/models/disco_app/concerns/shop.rb +20 -14
- data/app/models/disco_app/concerns/source.rb +2 -3
- data/app/models/disco_app/concerns/subscription.rb +3 -3
- data/app/models/disco_app/concerns/synchronises.rb +10 -15
- data/app/models/disco_app/concerns/taggable.rb +1 -0
- data/app/models/disco_app/concerns/user.rb +3 -2
- data/app/models/disco_app/flow/action.rb +9 -0
- data/app/models/disco_app/flow/concerns/action.rb +27 -0
- data/app/models/disco_app/flow/concerns/trigger.rb +28 -0
- data/app/models/disco_app/flow/concerns/trigger_usage.rb +17 -0
- data/app/models/disco_app/flow/trigger.rb +9 -0
- data/app/models/disco_app/flow/trigger_usage.rb +9 -0
- data/app/models/disco_app/plan.rb +2 -0
- data/app/models/disco_app/plan_code.rb +2 -0
- data/app/models/disco_app/session_storage.rb +5 -2
- data/app/models/disco_app/shop.rb +2 -0
- data/app/models/disco_app/source.rb +2 -0
- data/app/models/disco_app/subscription.rb +2 -0
- data/app/models/disco_app/user.rb +2 -0
- data/app/resources/disco_app/admin/resources/concerns/shop_resource.rb +12 -15
- data/app/resources/disco_app/admin/resources/shop_resource.rb +1 -0
- data/app/services/disco_app/carrier_request_service.rb +3 -3
- data/app/services/disco_app/charges_service.rb +26 -34
- data/app/services/disco_app/flow/create_action.rb +35 -0
- data/app/services/disco_app/flow/create_trigger.rb +34 -0
- data/app/services/disco_app/flow/process_action.rb +50 -0
- data/app/services/disco_app/flow/process_trigger.rb +72 -0
- data/app/services/disco_app/flow/update_trigger_usage.rb +42 -0
- data/app/services/disco_app/partner_app_service.rb +1 -1
- data/app/services/disco_app/proxy_service.rb +2 -2
- data/app/services/disco_app/request_validation_service.rb +2 -2
- data/app/services/disco_app/subscription_service.rb +60 -32
- data/app/services/disco_app/webhook_service.rb +9 -11
- data/app/views/layouts/admin.html.erb +1 -2
- data/app/views/layouts/application.html.erb +1 -2
- data/app/views/layouts/embedded_app.html.erb +2 -4
- data/app/views/layouts/embedded_app_modal.html.erb +2 -3
- data/app/views/shopify_app/sessions/new.html.erb +2 -4
- data/config/routes.rb +11 -3
- data/db/migrate/20150525000000_create_shops_if_not_existent.rb +80 -80
- data/db/migrate/20170315062548_create_disco_app_sources.rb +2 -0
- data/db/migrate/20170315062629_add_sources_to_shop_subscriptions.rb +3 -1
- data/db/migrate/20170327214540_create_disco_app_users.rb +2 -1
- data/db/migrate/20170606160751_fix_disco_app_users_index.rb +2 -0
- data/db/migrate/20181229100327_create_flow_actions_and_triggers.rb +32 -0
- data/db/migrate/20200405000000_create_flow_trigger_usages.rb +16 -0
- data/lib/disco_app/configuration.rb +12 -5
- data/lib/disco_app/constants.rb +4 -2
- data/lib/disco_app/engine.rb +1 -1
- data/lib/disco_app/session.rb +1 -0
- data/lib/disco_app/support/file_fixtures.rb +2 -1
- data/lib/disco_app/version.rb +3 -1
- data/lib/generators/disco_app/install/USAGE +5 -0
- data/lib/generators/disco_app/install/install_generator.rb +297 -0
- data/lib/generators/disco_app/{templates → install/templates}/assets/javascripts/application.js +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/assets/javascripts/components.js +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/assets/stylesheets/application.scss +0 -0
- data/lib/generators/disco_app/install/templates/config/appsignal.yml +12 -0
- data/lib/generators/disco_app/install/templates/config/cable.yml.tt +11 -0
- data/lib/generators/disco_app/{templates → install/templates}/config/database.yml.tt +6 -3
- data/lib/generators/disco_app/install/templates/config/environments/staging.rb +108 -0
- data/lib/generators/disco_app/{templates → install/templates}/config/puma.rb +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/controllers/home_controller.rb +1 -0
- data/lib/generators/disco_app/{templates → install/templates}/initializers/disco_app.rb +5 -0
- data/lib/generators/disco_app/install/templates/initializers/session_store.rb +2 -0
- data/lib/generators/disco_app/install/templates/initializers/shopify_app.rb +11 -0
- data/lib/generators/disco_app/{templates → install/templates}/initializers/shopify_session_repository.rb +0 -0
- data/lib/generators/disco_app/install/templates/initializers/timber.rb +4 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.editorconfig +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.env +7 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.env.local +4 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.gitignore +6 -0
- data/lib/generators/disco_app/install/templates/root/.rspec +1 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/.rubocop.yml +315 -217
- data/lib/generators/disco_app/install/templates/root/.tool-versions +2 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/CHECKS +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/Procfile +0 -0
- data/lib/generators/disco_app/{templates → install/templates}/root/README.md +0 -0
- data/lib/generators/disco_app/install/templates/root/package.json.tt +17 -0
- data/lib/generators/disco_app/install/templates/spec/rails_helper.rb +40 -0
- data/lib/generators/disco_app/install/templates/spec/spec_helper.rb +24 -0
- data/lib/generators/disco_app/install/templates/spec/support/active_job.rb +13 -0
- data/lib/generators/disco_app/install/templates/spec/support/coveralls.rb +3 -0
- data/lib/generators/disco_app/install/templates/spec/support/database_cleaner.rb +17 -0
- data/lib/generators/disco_app/install/templates/spec/support/factory_bot.rb +3 -0
- data/lib/generators/disco_app/install/templates/spec/support/helpers/json_helper.rb +13 -0
- data/lib/generators/disco_app/install/templates/spec/support/shared_examples/a_synchronise_job.rb +12 -0
- data/lib/generators/disco_app/install/templates/spec/support/shoulda.rb +6 -0
- data/lib/generators/disco_app/install/templates/spec/support/vcr.rb +14 -0
- data/lib/generators/disco_app/install/templates/spec/support/webmock.rb +8 -0
- data/lib/generators/disco_app/{templates → install/templates}/views/home/index.html.erb +0 -0
- data/lib/generators/disco_app/react/USAGE +5 -0
- data/lib/generators/disco_app/react/react_generator.rb +108 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/base_controller.rb +18 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/home_controller.rb +10 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/shops_controller.rb +11 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/api/users_controller.rb +11 -0
- data/lib/generators/disco_app/react/templates/app/controllers/embedded/home_controller.rb +13 -0
- data/lib/generators/disco_app/react/templates/app/models/api_response.rb +107 -0
- data/lib/generators/disco_app/react/templates/app/serializers/disco_app/shop_serializer.rb +13 -0
- data/lib/generators/disco_app/react/templates/app/serializers/disco_app/user_serializer.rb +13 -0
- data/lib/generators/disco_app/react/templates/app/serializers/empty_serializer.rb +5 -0
- data/lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb +76 -0
- data/lib/generators/disco_app/react/templates/app/views/embedded/home/index.html.erb +12 -0
- data/lib/generators/disco_app/react/templates/app/views/layouts/embedded.html.erb +10 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/App.jsx +77 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/HomePage.jsx +34 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/EmbeddedPage.jsx +70 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/ErrorBanner.jsx +58 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/PaginationWrapper.jsx +10 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/Shared/ScrollToTop.jsx +23 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/components/withApi.jsx +125 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/index.jsx +39 -0
- data/lib/generators/disco_app/react/templates/app/webpack/javascripts/embedded/utils.js +19 -0
- data/lib/generators/disco_app/react/templates/app/webpack/packs/embedded.js +2 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/banners.scss +7 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/busy.scss +3 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/index.scss +3 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded/shared/pagination.scss +5 -0
- data/lib/generators/disco_app/react/templates/app/webpack/stylesheets/embedded.scss +2 -0
- data/lib/generators/disco_app/react/templates/config/initializers/mime_types.rb +13 -0
- data/lib/generators/disco_app/react/templates/config/initializers/omniauth.rb +27 -0
- data/lib/generators/disco_app/react/templates/config/initializers/version.rb.tt +7 -0
- data/lib/generators/disco_app/react/templates/config/webpack/staging.js +5 -0
- data/lib/generators/disco_app/react/templates/config/webpack/test.js +5 -0
- data/lib/generators/disco_app/react/templates/config/webpacker.yml +96 -0
- data/lib/generators/disco_app/react/templates/root/.eslintignore +5 -0
- data/lib/generators/disco_app/react/templates/root/.eslintrc +69 -0
- data/lib/generators/disco_app/react/templates/root/.prettierrc +3 -0
- data/lib/generators/disco_app/react/templates/root/VERSION +1 -0
- data/lib/generators/disco_app/react/templates/root/babel.config.js +72 -0
- data/lib/generators/disco_app/react/templates/root/package.json.tt +84 -0
- data/lib/generators/disco_app/react/templates/root/postcss.config.js +14 -0
- data/lib/tasks/api.rake +0 -2
- data/lib/tasks/carrier_service.rake +0 -2
- data/lib/tasks/database.rake +1 -1
- data/lib/tasks/sessions.rake +0 -2
- data/lib/tasks/shops.rake +0 -2
- data/lib/tasks/users.rake +0 -2
- data/lib/tasks/webhooks.rake +0 -2
- data/test/clients/disco_app/api_client_test.rb +3 -3
- data/test/controllers/disco_app/admin/shops_controller_test.rb +1 -0
- data/test/controllers/disco_app/charges_controller_test.rb +8 -9
- data/test/controllers/disco_app/flow/trigger_usage_controller_test.rb +41 -0
- data/test/controllers/disco_app/install_controller_test.rb +2 -1
- data/test/controllers/disco_app/subscriptions_controller_test.rb +2 -1
- data/test/controllers/disco_app/webhooks_controller_test.rb +1 -0
- data/test/controllers/home_controller_test.rb +1 -1
- data/test/disco_app_test.rb +3 -1
- data/test/dummy/Rakefile +1 -1
- data/test/dummy/app/assets/config/manifest.js +2 -0
- data/test/dummy/app/controllers/application_controller.rb +2 -0
- data/test/dummy/app/controllers/carrier_request_controller.rb +1 -0
- data/test/dummy/app/controllers/disco_app/admin/shops_controller.rb +1 -0
- data/test/dummy/app/controllers/home_controller.rb +1 -0
- data/test/dummy/app/controllers/proxy_controller.rb +1 -0
- data/test/dummy/app/javascript/packs/application.js +18 -0
- data/test/dummy/app/jobs/disco_app/app_installed_job.rb +2 -3
- data/test/dummy/app/jobs/disco_app/app_uninstalled_job.rb +1 -0
- data/test/dummy/app/models/application_record.rb +2 -0
- data/test/dummy/app/models/cart.rb +4 -3
- data/test/dummy/app/models/disco_app/shop.rb +4 -5
- data/test/dummy/app/models/js_configuration.rb +1 -0
- data/test/dummy/app/models/product.rb +3 -2
- data/test/dummy/app/models/widget_configuration.rb +1 -0
- data/test/dummy/babel.config.js +72 -0
- data/test/dummy/bin/bundle +1 -1
- data/test/dummy/bin/rails +1 -1
- data/test/dummy/bin/setup +8 -8
- data/test/dummy/bin/webpack +19 -0
- data/test/dummy/bin/webpack-dev-server +19 -0
- data/test/dummy/config/application.rb +4 -3
- data/test/dummy/config/boot.rb +2 -2
- data/test/dummy/config/database.yml +3 -0
- data/test/dummy/config/environment.rb +1 -1
- data/test/dummy/config/environments/staging.rb +85 -0
- data/test/dummy/config/initializers/disco_app.rb +8 -1
- data/test/dummy/config/initializers/omniauth.rb +3 -4
- data/test/dummy/config/initializers/session_store.rb +1 -1
- data/test/dummy/config/initializers/shopify_app.rb +1 -0
- data/test/dummy/config/routes.rb +0 -2
- data/test/dummy/config/secrets.yml +3 -0
- data/test/dummy/config/webpack/development.js +5 -0
- data/test/dummy/config/webpack/environment.js +3 -0
- data/test/dummy/config/webpack/production.js +5 -0
- data/test/dummy/config/webpack/test.js +5 -0
- data/test/dummy/config/webpacker.yml +95 -0
- data/test/dummy/db/migrate/20160307182229_create_products.rb +3 -1
- data/test/dummy/db/migrate/20160530160739_create_asset_models.rb +3 -1
- data/test/dummy/db/migrate/20161105054746_create_carts.rb +2 -1
- data/test/dummy/db/schema.rb +45 -6
- data/test/dummy/package.json +8 -0
- data/test/dummy/postcss.config.js +12 -0
- data/test/dummy/yarn.lock +7244 -0
- data/test/fixtures/api/subscriptions/valid_request.json +1 -1
- data/test/fixtures/api/widget_store/empty_webhooks.json +3 -0
- data/test/fixtures/api/widget_store/existing_webhooks.json +43 -0
- data/test/fixtures/disco_app/shops.yml +3 -0
- data/test/fixtures/webhooks/flow/trigger_usage.json +7 -0
- data/test/integration/synchronises_test.rb +2 -1
- data/test/jobs/disco_app/app_installed_job_test.rb +28 -9
- data/test/jobs/disco_app/app_uninstalled_job_test.rb +5 -2
- data/test/jobs/disco_app/send_subscription_job_test.rb +3 -2
- data/test/jobs/disco_app/synchronise_carrier_service_job_test.rb +1 -0
- data/test/jobs/disco_app/synchronise_users_job_test.rb +1 -0
- data/test/jobs/disco_app/synchronise_webhooks_job_test.rb +70 -13
- data/test/models/disco_app/can_be_liquified_test.rb +3 -1
- data/test/models/disco_app/has_metafields_test.rb +37 -18
- data/test/models/disco_app/renders_assets_test.rb +2 -1
- data/test/models/disco_app/session_test.rb +2 -2
- data/test/models/disco_app/shop_test.rb +1 -1
- data/test/services/disco_app/charges_service_test.rb +7 -8
- data/test/services/disco_app/flow/create_action_test.rb +51 -0
- data/test/services/disco_app/flow/create_trigger_test.rb +56 -0
- data/test/services/disco_app/flow/process_action_test.rb +68 -0
- data/test/services/disco_app/flow/process_trigger_test.rb +94 -0
- data/test/services/disco_app/flow/update_trigger_usage_test.rb +87 -0
- data/test/services/disco_app/subscription_service_test.rb +3 -2
- data/test/support/test_file_fixtures.rb +2 -2
- data/test/support/test_shopify_api.rb +1 -1
- data/test/test_helper.rb +10 -7
- data/test/vcr/flow_trigger_invalid_title.yml +35 -0
- data/test/vcr/flow_trigger_valid.yml +38 -0
- data/test/vcr/webhook_failure.yml +13 -13
- metadata +282 -148
- data/app/clients/disco_app/disco_api_error.rb +0 -2
- data/app/clients/disco_app/rollbar_client.rb +0 -53
- data/app/clients/disco_app/rollbar_client_error.rb +0 -2
- data/lib/generators/disco_app/USAGE +0 -5
- data/lib/generators/disco_app/disco_app_generator.rb +0 -236
- data/lib/generators/disco_app/templates/config/newrelic.yml +0 -26
- data/lib/generators/disco_app/templates/initializers/rollbar.rb +0 -23
- data/lib/generators/disco_app/templates/initializers/session_store.rb +0 -2
- data/lib/generators/disco_app/templates/initializers/shopify_app.rb +0 -6
- data/lib/generators/disco_app/templates/root/.codeclimate.yml +0 -7
- data/lib/generators/disco_app/templates/root/.ruby-version +0 -1
- data/lib/tasks/rollbar.rake +0 -24
- data/test/fixtures/api/widget_store/webhooks.json +0 -1
@@ -1,9 +1,10 @@
|
|
1
1
|
class Product < ApplicationRecord
|
2
|
+
|
2
3
|
include DiscoApp::Concerns::Synchronises
|
4
|
+
|
3
5
|
include DiscoApp::Concerns::HasMetafields
|
6
|
+
SHOPIFY_API_CLASS = ShopifyAPI::Product
|
4
7
|
|
5
8
|
belongs_to :shop, class_name: 'DiscoApp::Shop'
|
6
9
|
|
7
|
-
SHOPIFY_API_CLASS = ShopifyAPI::Product
|
8
|
-
|
9
10
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
module.exports = function(api) {
|
2
|
+
var validEnv = ['development', 'test', 'production']
|
3
|
+
var currentEnv = api.env()
|
4
|
+
var isDevelopmentEnv = api.env('development')
|
5
|
+
var isProductionEnv = api.env('production')
|
6
|
+
var isTestEnv = api.env('test')
|
7
|
+
|
8
|
+
if (!validEnv.includes(currentEnv)) {
|
9
|
+
throw new Error(
|
10
|
+
'Please specify a valid `NODE_ENV` or ' +
|
11
|
+
'`BABEL_ENV` environment variables. Valid values are "development", ' +
|
12
|
+
'"test", and "production". Instead, received: ' +
|
13
|
+
JSON.stringify(currentEnv) +
|
14
|
+
'.'
|
15
|
+
)
|
16
|
+
}
|
17
|
+
|
18
|
+
return {
|
19
|
+
presets: [
|
20
|
+
isTestEnv && [
|
21
|
+
require('@babel/preset-env').default,
|
22
|
+
{
|
23
|
+
targets: {
|
24
|
+
node: 'current'
|
25
|
+
}
|
26
|
+
}
|
27
|
+
],
|
28
|
+
(isProductionEnv || isDevelopmentEnv) && [
|
29
|
+
require('@babel/preset-env').default,
|
30
|
+
{
|
31
|
+
forceAllTransforms: true,
|
32
|
+
useBuiltIns: 'entry',
|
33
|
+
corejs: 3,
|
34
|
+
modules: false,
|
35
|
+
exclude: ['transform-typeof-symbol']
|
36
|
+
}
|
37
|
+
]
|
38
|
+
].filter(Boolean),
|
39
|
+
plugins: [
|
40
|
+
require('babel-plugin-macros'),
|
41
|
+
require('@babel/plugin-syntax-dynamic-import').default,
|
42
|
+
isTestEnv && require('babel-plugin-dynamic-import-node'),
|
43
|
+
require('@babel/plugin-transform-destructuring').default,
|
44
|
+
[
|
45
|
+
require('@babel/plugin-proposal-class-properties').default,
|
46
|
+
{
|
47
|
+
loose: true
|
48
|
+
}
|
49
|
+
],
|
50
|
+
[
|
51
|
+
require('@babel/plugin-proposal-object-rest-spread').default,
|
52
|
+
{
|
53
|
+
useBuiltIns: true
|
54
|
+
}
|
55
|
+
],
|
56
|
+
[
|
57
|
+
require('@babel/plugin-transform-runtime').default,
|
58
|
+
{
|
59
|
+
helpers: false,
|
60
|
+
regenerator: true,
|
61
|
+
corejs: false
|
62
|
+
}
|
63
|
+
],
|
64
|
+
[
|
65
|
+
require('@babel/plugin-transform-regenerator').default,
|
66
|
+
{
|
67
|
+
async: false
|
68
|
+
}
|
69
|
+
]
|
70
|
+
].filter(Boolean)
|
71
|
+
}
|
72
|
+
}
|
data/test/dummy/bin/bundle
CHANGED
data/test/dummy/bin/rails
CHANGED
data/test/dummy/bin/setup
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
require 'pathname'
|
3
3
|
|
4
4
|
# path to your application root.
|
5
|
-
APP_ROOT = Pathname.new File.expand_path('
|
5
|
+
APP_ROOT = Pathname.new File.expand_path('..', __dir__)
|
6
6
|
|
7
7
|
Dir.chdir APP_ROOT do
|
8
8
|
# This script is a starting point to setup your application.
|
9
9
|
# Add necessary setup steps to this file:
|
10
10
|
|
11
|
-
puts
|
12
|
-
system
|
13
|
-
system
|
11
|
+
puts '== Installing dependencies =='
|
12
|
+
system 'gem install bundler --conservative'
|
13
|
+
system 'bundle check || bundle install'
|
14
14
|
|
15
15
|
# puts "\n== Copying sample files =="
|
16
16
|
# unless File.exist?("config/database.yml")
|
@@ -18,12 +18,12 @@ Dir.chdir APP_ROOT do
|
|
18
18
|
# end
|
19
19
|
|
20
20
|
puts "\n== Preparing database =="
|
21
|
-
system
|
21
|
+
system 'bin/rake db:setup'
|
22
22
|
|
23
23
|
puts "\n== Removing old logs and tempfiles =="
|
24
|
-
system
|
25
|
-
system
|
24
|
+
system 'rm -f log/*'
|
25
|
+
system 'rm -rf tmp/cache'
|
26
26
|
|
27
27
|
puts "\n== Restarting application server =="
|
28
|
-
system
|
28
|
+
system 'touch tmp/restart.txt'
|
29
29
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development"
|
4
|
+
ENV["NODE_ENV"] ||= "development"
|
5
|
+
|
6
|
+
require "pathname"
|
7
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
8
|
+
Pathname.new(__FILE__).realpath)
|
9
|
+
|
10
|
+
require "rubygems"
|
11
|
+
require "bundler/setup"
|
12
|
+
|
13
|
+
require "webpacker"
|
14
|
+
require "webpacker/webpack_runner"
|
15
|
+
|
16
|
+
APP_ROOT = File.expand_path("..", __dir__)
|
17
|
+
Dir.chdir(APP_ROOT) do
|
18
|
+
Webpacker::WebpackRunner.run(ARGV)
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development"
|
4
|
+
ENV["NODE_ENV"] ||= "development"
|
5
|
+
|
6
|
+
require "pathname"
|
7
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
8
|
+
Pathname.new(__FILE__).realpath)
|
9
|
+
|
10
|
+
require "rubygems"
|
11
|
+
require "bundler/setup"
|
12
|
+
|
13
|
+
require "webpacker"
|
14
|
+
require "webpacker/dev_server_runner"
|
15
|
+
|
16
|
+
APP_ROOT = File.expand_path("..", __dir__)
|
17
|
+
Dir.chdir(APP_ROOT) do
|
18
|
+
Webpacker::DevServerRunner.run(ARGV)
|
19
|
+
end
|
@@ -1,12 +1,13 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('boot', __dir__)
|
2
2
|
|
3
3
|
require 'rails/all'
|
4
4
|
|
5
5
|
Bundler.require(*Rails.groups)
|
6
|
-
require
|
6
|
+
require 'disco_app'
|
7
7
|
|
8
8
|
module Dummy
|
9
9
|
class Application < Rails::Application
|
10
|
+
|
10
11
|
config.action_dispatch.default_headers['P3P'] = 'CP="Not used"'
|
11
12
|
config.action_dispatch.default_headers.delete('X-Frame-Options')
|
12
13
|
# Settings in config/environments/* take precedence over those specified here.
|
@@ -30,6 +31,6 @@ module Dummy
|
|
30
31
|
|
31
32
|
# Explicitly prevent real charges being created by default
|
32
33
|
config.x.shopify_charges_real = false
|
34
|
+
|
33
35
|
end
|
34
36
|
end
|
35
|
-
|
data/test/dummy/config/boot.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Set up gems listed in the Gemfile.
|
2
|
-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('
|
2
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__)
|
3
3
|
|
4
4
|
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
5
|
-
$LOAD_PATH.unshift File.expand_path('
|
5
|
+
$LOAD_PATH.unshift File.expand_path('../../../lib', __dir__)
|
@@ -0,0 +1,85 @@
|
|
1
|
+
Rails.application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
3
|
+
|
4
|
+
# Use Sidekiq as the active job backend
|
5
|
+
config.active_job.queue_adapter = :sidekiq
|
6
|
+
|
7
|
+
# Allow real charges in staging with an ENV variable
|
8
|
+
config.x.shopify_charges_real = ENV['SHOPIFY_CHARGES_REAL'] == 'true'
|
9
|
+
|
10
|
+
# Code is not reloaded between requests.
|
11
|
+
config.cache_classes = true
|
12
|
+
|
13
|
+
# Eager load code on boot. This eager loads most of Rails and
|
14
|
+
# your application in memory, allowing both threaded web servers
|
15
|
+
# and those relying on copy on write to perform better.
|
16
|
+
# Rake tasks automatically ignore this option for performance.
|
17
|
+
config.eager_load = true
|
18
|
+
|
19
|
+
# Full error reports are disabled and caching is turned on.
|
20
|
+
config.consider_all_requests_local = false
|
21
|
+
config.action_controller.perform_caching = true
|
22
|
+
|
23
|
+
# Enable Rack::Cache to put a simple HTTP cache in front of your application
|
24
|
+
# Add `rack-cache` to your Gemfile before enabling this.
|
25
|
+
# For large-scale production use, consider using a caching reverse proxy like
|
26
|
+
# NGINX, varnish or squid.
|
27
|
+
# config.action_dispatch.rack_cache = true
|
28
|
+
|
29
|
+
# Disable serving static files from the `/public` folder by default since
|
30
|
+
# Apache or NGINX already handles this.
|
31
|
+
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
|
32
|
+
|
33
|
+
# Compress JavaScripts and CSS.
|
34
|
+
config.assets.js_compressor = :uglifier
|
35
|
+
config.assets.css_compressor = :sass
|
36
|
+
|
37
|
+
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
38
|
+
config.assets.compile = false
|
39
|
+
|
40
|
+
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
41
|
+
# yet still be able to expire them through the digest params.
|
42
|
+
config.assets.digest = true
|
43
|
+
|
44
|
+
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
|
45
|
+
|
46
|
+
# Specifies the header that your server uses for sending files.
|
47
|
+
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
|
48
|
+
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
|
49
|
+
|
50
|
+
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
51
|
+
config.force_ssl = true
|
52
|
+
|
53
|
+
# Use the lowest log level to ensure availability of diagnostic information
|
54
|
+
# when problems arise.
|
55
|
+
config.log_level = :debug
|
56
|
+
|
57
|
+
# Prepend all log lines with the following tags.
|
58
|
+
# config.log_tags = [ :subdomain, :uuid ]
|
59
|
+
|
60
|
+
# Use a different logger for distributed setups.
|
61
|
+
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
62
|
+
|
63
|
+
# Use a different cache store in staging.
|
64
|
+
# config.cache_store = :mem_cache_store
|
65
|
+
|
66
|
+
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
67
|
+
# config.action_controller.asset_host = 'http://assets.example.com'
|
68
|
+
|
69
|
+
# Ignore bad email addresses and do not raise email delivery errors.
|
70
|
+
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
71
|
+
# config.action_mailer.raise_delivery_errors = false
|
72
|
+
|
73
|
+
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
74
|
+
# the I18n.default_locale when a translation cannot be found).
|
75
|
+
config.i18n.fallbacks = true
|
76
|
+
|
77
|
+
# Send deprecation notices to registered listeners.
|
78
|
+
config.active_support.deprecation = :notify
|
79
|
+
|
80
|
+
# Use default logging formatter so that PID and timestamp are not suppressed.
|
81
|
+
config.log_formatter = ::Logger::Formatter.new
|
82
|
+
|
83
|
+
# Do not dump schema after migrations.
|
84
|
+
config.active_record.dump_schema_after_migration = false
|
85
|
+
end
|
@@ -6,7 +6,14 @@ DiscoApp.configure do |config|
|
|
6
6
|
|
7
7
|
# Set a list of webhook topics to listen for.
|
8
8
|
# See https://help.shopify.com/api/reference/webhook.
|
9
|
-
config.webhook_topics = [
|
9
|
+
config.webhook_topics = %i[orders/create orders/paid carts/create carts/update]
|
10
|
+
|
11
|
+
# By default, webhooks request all fields to be provided in the payload.
|
12
|
+
# You can override this behaviour by providing an entry in this hash with the
|
13
|
+
# key set to a webhook topic and the value set to an array of fields.
|
14
|
+
config.webhook_fields = {
|
15
|
+
'orders/paid': [:id]
|
16
|
+
}
|
10
17
|
|
11
18
|
# Set the below if using an application proxy.
|
12
19
|
config.app_proxy_prefix = ENV['SHOPIFY_APP_PROXY_PREFIX']
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
2
2
|
provider :shopify,
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
:scope => ShopifyApp.configuration.scope
|
3
|
+
ShopifyApp.configuration.api_key,
|
4
|
+
ShopifyApp.configuration.secret,
|
5
|
+
scope: ShopifyApp.configuration.scope
|
7
6
|
end
|
@@ -1,2 +1,2 @@
|
|
1
1
|
# Use an ActiveRecord-based session store.
|
2
|
-
Rails.application.config.session_store :active_record_store, :
|
2
|
+
Rails.application.config.session_store :active_record_store, key: '_disco_app_session'
|
data/test/dummy/config/routes.rb
CHANGED
@@ -0,0 +1,95 @@
|
|
1
|
+
# Note: You must restart bin/webpack-dev-server for changes to take effect
|
2
|
+
|
3
|
+
default: &default
|
4
|
+
source_path: app/javascript
|
5
|
+
source_entry_path: packs
|
6
|
+
public_root_path: public
|
7
|
+
public_output_path: packs
|
8
|
+
cache_path: tmp/cache/webpacker
|
9
|
+
check_yarn_integrity: false
|
10
|
+
webpack_compile_output: false
|
11
|
+
|
12
|
+
# Additional paths webpack should lookup modules
|
13
|
+
# ['app/assets', 'engine/foo/app/assets']
|
14
|
+
resolved_paths: []
|
15
|
+
|
16
|
+
# Reload manifest.json on all requests so we reload latest compiled packs
|
17
|
+
cache_manifest: false
|
18
|
+
|
19
|
+
# Extract and emit a css file
|
20
|
+
extract_css: false
|
21
|
+
|
22
|
+
static_assets_extensions:
|
23
|
+
- .jpg
|
24
|
+
- .jpeg
|
25
|
+
- .png
|
26
|
+
- .gif
|
27
|
+
- .tiff
|
28
|
+
- .ico
|
29
|
+
- .svg
|
30
|
+
- .eot
|
31
|
+
- .otf
|
32
|
+
- .ttf
|
33
|
+
- .woff
|
34
|
+
- .woff2
|
35
|
+
|
36
|
+
extensions:
|
37
|
+
- .mjs
|
38
|
+
- .js
|
39
|
+
- .sass
|
40
|
+
- .scss
|
41
|
+
- .css
|
42
|
+
- .module.sass
|
43
|
+
- .module.scss
|
44
|
+
- .module.css
|
45
|
+
- .png
|
46
|
+
- .svg
|
47
|
+
- .gif
|
48
|
+
- .jpeg
|
49
|
+
- .jpg
|
50
|
+
|
51
|
+
development:
|
52
|
+
<<: *default
|
53
|
+
compile: true
|
54
|
+
|
55
|
+
# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
|
56
|
+
check_yarn_integrity: true
|
57
|
+
|
58
|
+
# Reference: https://webpack.js.org/configuration/dev-server/
|
59
|
+
dev_server:
|
60
|
+
https: false
|
61
|
+
host: localhost
|
62
|
+
port: 3035
|
63
|
+
public: localhost:3035
|
64
|
+
hmr: false
|
65
|
+
# Inline should be set to true if using HMR
|
66
|
+
inline: true
|
67
|
+
overlay: true
|
68
|
+
compress: true
|
69
|
+
disable_host_check: true
|
70
|
+
use_local_ip: false
|
71
|
+
quiet: false
|
72
|
+
headers:
|
73
|
+
'Access-Control-Allow-Origin': '*'
|
74
|
+
watch_options:
|
75
|
+
ignored: '**/node_modules/**'
|
76
|
+
|
77
|
+
|
78
|
+
test:
|
79
|
+
<<: *default
|
80
|
+
compile: true
|
81
|
+
|
82
|
+
# Compile test packs to a separate directory
|
83
|
+
public_output_path: packs-test
|
84
|
+
|
85
|
+
production:
|
86
|
+
<<: *default
|
87
|
+
|
88
|
+
# Production depends on precompilation of packs prior to booting for performance.
|
89
|
+
compile: false
|
90
|
+
|
91
|
+
# Extract and emit a css file
|
92
|
+
extract_css: true
|
93
|
+
|
94
|
+
# Cache manifest.json for performance
|
95
|
+
cache_manifest: true
|
@@ -1,5 +1,6 @@
|
|
1
1
|
class CreateProducts < ActiveRecord::Migration[4.2]
|
2
|
-
|
2
|
+
|
3
|
+
def change
|
3
4
|
create_table :products do |t|
|
4
5
|
t.integer :shop_id, limit: 8
|
5
6
|
t.jsonb :data
|
@@ -8,4 +9,5 @@ def change
|
|
8
9
|
end
|
9
10
|
add_foreign_key :products, :disco_app_shops, column: :shop_id
|
10
11
|
end
|
12
|
+
|
11
13
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
class CreateAssetModels < ActiveRecord::Migration[4.2]
|
2
|
-
|
2
|
+
|
3
|
+
def change
|
3
4
|
create_table :js_configurations do |t|
|
4
5
|
t.integer :shop_id, limit: 8
|
5
6
|
t.string :label, default: 'Default'
|
@@ -16,4 +17,5 @@ def change
|
|
16
17
|
add_foreign_key :js_configurations, :disco_app_shops, column: :shop_id
|
17
18
|
add_foreign_key :widget_configurations, :disco_app_shops, column: :shop_id
|
18
19
|
end
|
20
|
+
|
19
21
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class CreateCarts < ActiveRecord::Migration[4.2]
|
2
2
|
|
3
|
-
def change
|
3
|
+
def change
|
4
4
|
create_table :carts do |t|
|
5
5
|
t.integer :shop_id, limit: 8
|
6
6
|
t.string :token
|
@@ -11,4 +11,5 @@ def change
|
|
11
11
|
add_foreign_key :carts, :disco_app_shops, column: :shop_id
|
12
12
|
add_index :carts, :token, unique: true
|
13
13
|
end
|
14
|
+
|
14
15
|
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
# of editing this file, please use the migrations feature of Active Record to
|
3
3
|
# incrementally modify your database, and then regenerate this schema definition.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# from scratch.
|
9
|
-
#
|
5
|
+
# This file is the source Rails uses to define your schema when running `rails
|
6
|
+
# db:schema:load`. When creating a new database, `rails db:schema:load` tends to
|
7
|
+
# be faster and is potentially less error prone than running all of your
|
8
|
+
# migrations from scratch. Old migrations may fail to apply correctly if those
|
9
|
+
# migrations use external dependencies or application code.
|
10
10
|
#
|
11
11
|
# It's strongly recommended that you check this file into your version control system.
|
12
12
|
|
13
|
-
ActiveRecord::Schema.define(version:
|
13
|
+
ActiveRecord::Schema.define(version: 2020_04_05_000000) do
|
14
14
|
|
15
15
|
# These are extensions that must be enabled in order to support this database
|
16
16
|
enable_extension "plpgsql"
|
@@ -39,6 +39,42 @@ ActiveRecord::Schema.define(version: 20170606160751) do
|
|
39
39
|
t.string "confirmation_url"
|
40
40
|
end
|
41
41
|
|
42
|
+
create_table "disco_app_flow_actions", force: :cascade do |t|
|
43
|
+
t.bigint "shop_id"
|
44
|
+
t.string "action_id"
|
45
|
+
t.string "action_run_id"
|
46
|
+
t.jsonb "properties", default: {}
|
47
|
+
t.integer "status", default: 0
|
48
|
+
t.datetime "processed_at"
|
49
|
+
t.jsonb "processing_errors", default: []
|
50
|
+
t.datetime "created_at", null: false
|
51
|
+
t.datetime "updated_at", null: false
|
52
|
+
t.index ["action_run_id"], name: "index_disco_app_flow_actions_on_action_run_id", unique: true
|
53
|
+
end
|
54
|
+
|
55
|
+
create_table "disco_app_flow_trigger_usages", force: :cascade do |t|
|
56
|
+
t.bigint "shop_id"
|
57
|
+
t.string "flow_trigger_definition_id"
|
58
|
+
t.boolean "has_enabled_flow", default: true
|
59
|
+
t.datetime "timestamp"
|
60
|
+
t.datetime "created_at", null: false
|
61
|
+
t.datetime "updated_at", null: false
|
62
|
+
t.index ["shop_id", "flow_trigger_definition_id"], name: "index_disco_app_flow_actions_on_shop_id_and_trigger_id", unique: true
|
63
|
+
end
|
64
|
+
|
65
|
+
create_table "disco_app_flow_triggers", force: :cascade do |t|
|
66
|
+
t.bigint "shop_id"
|
67
|
+
t.string "title"
|
68
|
+
t.string "resource_name"
|
69
|
+
t.string "resource_url"
|
70
|
+
t.jsonb "properties", default: {}
|
71
|
+
t.integer "status", default: 0
|
72
|
+
t.datetime "processed_at"
|
73
|
+
t.jsonb "processing_errors", default: []
|
74
|
+
t.datetime "created_at", null: false
|
75
|
+
t.datetime "updated_at", null: false
|
76
|
+
end
|
77
|
+
|
42
78
|
create_table "disco_app_plan_codes", force: :cascade do |t|
|
43
79
|
t.bigint "plan_id"
|
44
80
|
t.string "code"
|
@@ -154,6 +190,9 @@ ActiveRecord::Schema.define(version: 20170606160751) do
|
|
154
190
|
add_foreign_key "carts", "disco_app_shops", column: "shop_id"
|
155
191
|
add_foreign_key "disco_app_application_charges", "disco_app_shops", column: "shop_id"
|
156
192
|
add_foreign_key "disco_app_application_charges", "disco_app_subscriptions", column: "subscription_id"
|
193
|
+
add_foreign_key "disco_app_flow_actions", "disco_app_shops", column: "shop_id", on_delete: :cascade
|
194
|
+
add_foreign_key "disco_app_flow_trigger_usages", "disco_app_shops", column: "shop_id", on_delete: :cascade
|
195
|
+
add_foreign_key "disco_app_flow_triggers", "disco_app_shops", column: "shop_id", on_delete: :cascade
|
157
196
|
add_foreign_key "disco_app_plan_codes", "disco_app_plans", column: "plan_id"
|
158
197
|
add_foreign_key "disco_app_recurring_application_charges", "disco_app_shops", column: "shop_id"
|
159
198
|
add_foreign_key "disco_app_recurring_application_charges", "disco_app_subscriptions", column: "subscription_id"
|