Skip to content

Commit

Permalink
feat: prebuilt v1 addons (emberjs#8353)
Browse files Browse the repository at this point in the history
* feat: @ember-data/adapter as v2-lite addon

* fix lint and docs src

* remove unneded file

* feat: @ember-data/serializer as v2-lite addon

* fix docs src

* feat: @ember-data/{model|record-data} as v2-lite addons
  • Loading branch information
runspired authored Dec 8, 2022
1 parent 35ff11d commit 820cf8c
Show file tree
Hide file tree
Showing 98 changed files with 1,129 additions and 355 deletions.
4 changes: 4 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@
/packages/tracking/addon/
/packages/request/addon/
/packages/store/addon/
/packages/adapter/addon/
/packages/-ember-data/docs/
/packages/tracking/addon/
/packages/serializer/addon/
/packages/model/addon/
/packages/record-data/addon/

**/DEBUG/

Expand Down
69 changes: 33 additions & 36 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ module.exports = {
'packages/store/src/-private/utils/coerce-id.ts',
'packages/store/src/-private/index.ts',
'packages/store/src/-private/caches/identifier-cache.ts',
'packages/serializer/addon/index.ts',
'packages/serializer/src/index.ts',
'@types/@ember/runloop/index.d.ts',
'@types/@ember/polyfills/index.d.ts',
'tests/graph/tests/integration/graph/polymorphism/implicit-keys-test.ts',
Expand All @@ -213,48 +213,45 @@ module.exports = {
'tests/graph/tests/integration/graph/edge-removal/helpers.ts',
'tests/graph/tests/integration/graph/edge-removal/abstract-edge-removal-test.ts',
'tests/graph/tests/integration/graph.ts',
'packages/record-data/addon/-private/relationships/state/has-many.ts',
'packages/record-data/addon/-private/relationships/state/belongs-to.ts',
'packages/record-data/addon/-private/record-data.ts',
'packages/record-data/addon/-private/normalize-link.ts',
'packages/record-data/addon/-private/index.ts',
'packages/record-data/addon/-private/graph/operations/update-relationship.ts',
'packages/record-data/addon/-private/graph/operations/replace-related-records.ts',
'packages/record-data/addon/-private/graph/operations/replace-related-record.ts',
'packages/record-data/addon/-private/graph/operations/remove-from-related-records.ts',
'packages/record-data/addon/-private/graph/operations/add-to-related-records.ts',
'packages/record-data/addon/-private/graph/index.ts',
'packages/record-data/addon/-private/graph/-utils.ts',
'packages/record-data/addon/-private/graph/-state.ts',
'packages/record-data/addon/-private/graph/-operations.ts',
'packages/record-data/addon/-private/graph/-edge-definition.ts',
'packages/record-data/addon/-private/coerce-id.ts',
'packages/record-data/src/-private/relationships/state/has-many.ts',
'packages/record-data/src/-private/relationships/state/belongs-to.ts',
'packages/record-data/src/-private/record-data.ts',
'packages/record-data/src/-private/normalize-link.ts',
'packages/record-data/src/-private/graph/operations/update-relationship.ts',
'packages/record-data/src/-private/graph/operations/replace-related-records.ts',
'packages/record-data/src/-private/graph/operations/replace-related-record.ts',
'packages/record-data/src/-private/graph/operations/remove-from-related-records.ts',
'packages/record-data/src/-private/graph/operations/add-to-related-records.ts',
'packages/record-data/src/-private/graph/index.ts',
'packages/record-data/src/-private/graph/-utils.ts',
'packages/record-data/src/-private/graph/-state.ts',
'packages/record-data/src/-private/graph/-operations.ts',
'packages/record-data/src/-private/graph/-edge-definition.ts',
'packages/record-data/src/-private/coerce-id.ts',
'packages/private-build-infra/addon/index.ts',
'packages/private-build-infra/addon/deprecations.ts',
'packages/private-build-infra/addon/current-deprecations.ts',
'packages/private-build-infra/addon/available-packages.ts',
'packages/model/addon/index.ts',
'packages/model/addon/-private/util.ts',
'packages/model/addon/-private/relationship-meta.ts',
'packages/model/addon/-private/legacy-relationships-support.ts',
'packages/model/addon/-private/promise-many-array.ts',
'packages/model/addon/-private/model-for-mixin.ts',
'packages/model/addon/-private/record-state.ts',
'packages/model/addon/-private/notify-changes.ts',
'packages/model/addon/-private/index.ts',
'packages/model/src/index.ts',
'packages/model/src/-private/util.ts',
'packages/model/src/-private/relationship-meta.ts',
'packages/model/src/-private/legacy-relationships-support.ts',
'packages/model/src/-private/promise-many-array.ts',
'packages/model/src/-private/model-for-mixin.ts',
'packages/model/src/-private/record-state.ts',
'packages/model/src/-private/notify-changes.ts',
'packages/canary-features/addon/index.ts',
'packages/canary-features/addon/default-features.ts',
'packages/adapter/types/require/index.d.ts',
'packages/adapter/addon/rest.ts',
'packages/adapter/addon/json-api.ts',
'packages/adapter/addon/index.ts',
'packages/adapter/addon/-private/utils/serialize-query-params.ts',
'packages/adapter/addon/-private/utils/fetch.ts',
'packages/adapter/addon/-private/utils/determine-body-promise.ts',
'packages/adapter/addon/-private/utils/continue-on-reject.ts',
'packages/adapter/addon/-private/index.ts',
'packages/adapter/addon/-private/fastboot-interface.ts',
'packages/adapter/addon/-private/build-url-mixin.ts',
'packages/adapter/src/rest.ts',
'packages/adapter/src/json-api.ts',
'packages/adapter/src/index.ts',
'packages/adapter/src/-private/utils/serialize-query-params.ts',
'packages/adapter/src/-private/utils/fetch.ts',
'packages/adapter/src/-private/utils/determine-body-promise.ts',
'packages/adapter/src/-private/utils/continue-on-reject.ts',
'packages/adapter/src/-private/fastboot-interface.ts',
'packages/adapter/src/-private/build-url-mixin.ts',
'packages/-ember-data/addon/store.ts',
'tests/main/tests/unit/custom-class-support/custom-class-model-test.ts',
'tests/main/tests/integration/request-state-service-test.ts',
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ tmp
packages/tracking/addon
packages/request/addon
packages/store/addon
packages/adapter/addon
packages/serializer/addon
packages/model/addon
packages/record-data/addon

# dependencies
bower_components
Expand Down
8 changes: 4 additions & 4 deletions docs-generator/yuidoc.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
"paths": [
"../ember-data-types",
"../packages/-ember-data/addon",
"../packages/adapter/addon",
"../packages/model/addon",
"../packages/serializer/addon",
"../packages/adapter/src",
"../packages/model/src",
"../packages/serializer/src",
"../packages/store/src",
"../packages/record-data/addon",
"../packages/record-data/src",
"../packages/debug/addon",
"../packages/private-build-infra/addon",
"../packages/canary-features/addon",
Expand Down
90 changes: 90 additions & 0 deletions packages/adapter/addon-main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
const pkg = require('./package.json');

module.exports = {
name: pkg.name,

options: {
'@embroider/macros': {
setOwnConfig: {},
},
},

_emberDataConfig: null,
configureEmberData() {
if (this._emberDataConfig) {
return this._emberDataConfig;
}
const app = this._findHost();
const isProd = /production/.test(process.env.EMBER_ENV);
const hostOptions = app.options?.emberData || {};
const debugOptions = Object.assign(
{
LOG_PAYLOADS: false,
LOG_OPERATIONS: false,
LOG_MUTATIONS: false,
LOG_NOTIFICATIONS: false,
LOG_REQUEST_STATUS: false,
LOG_IDENTIFIERS: false,
LOG_GRAPH: false,
LOG_INSTANCE_CACHE: false,
},
hostOptions.debug || {}
);
let HAS_DEBUG_PACKAGE, HAS_META_PACKAGE;

try {
// eslint-disable-next-line node/no-missing-require
require.resolve('@ember-data/debug', { paths: [process.cwd(), __dirname] });
HAS_DEBUG_PACKAGE = true;
} catch {
HAS_DEBUG_PACKAGE = false;
}
try {
// eslint-disable-next-line node/no-missing-require
require.resolve('ember-data', { paths: [process.cwd(), __dirname] });
HAS_META_PACKAGE = true;
} catch {
HAS_META_PACKAGE = false;
}
const includeDataAdapterInProduction =
typeof hostOptions.includeDataAdapterInProduction === 'boolean'
? hostOptions.includeDataAdapterInProduction
: HAS_META_PACKAGE;

const includeDataAdapter = HAS_DEBUG_PACKAGE ? (isProd ? includeDataAdapterInProduction : true) : false;
const DEPRECATIONS = require('@ember-data/private-build-infra/src/deprecations')(hostOptions.compatWith || null);
const FEATURES = require('@ember-data/private-build-infra/src/features')(isProd);

// copy configs forward
const ownConfig = this.options['@embroider/macros'].setOwnConfig;
ownConfig.compatWith = hostOptions.compatWith || null;
ownConfig.debug = debugOptions;
ownConfig.deprecations = Object.assign(DEPRECATIONS, ownConfig.deprecations || {});
ownConfig.features = Object.assign({}, FEATURES);
ownConfig.includeDataAdapter = includeDataAdapter;

this._emberDataConfig = ownConfig;
return ownConfig;
},

included() {
this.configureEmberData();
return this._super.included.call(this, ...arguments);
},

treeForVendor() {
return;
},
treeForPublic() {
return;
},
treeForStyles() {
return;
},
treeForAddonStyles() {
return;
},
treeForApp() {
return;
},
};
10 changes: 0 additions & 10 deletions packages/adapter/addon/-private/index.ts

This file was deleted.

13 changes: 13 additions & 0 deletions packages/adapter/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const macros = require('@ember-data/private-build-infra/src/v2-babel-build-pack');

module.exports = {
plugins: [
...macros,
// '@embroider/macros/src/babel/macros-babel-plugin.js',
['@babel/plugin-transform-runtime', { loose: true }],
['@babel/plugin-transform-typescript', { allowDeclareFields: true }],
['@babel/plugin-proposal-decorators', { legacy: true, loose: true }],
['@babel/plugin-proposal-private-methods', { loose: true }],
['@babel/plugin-proposal-class-properties', { loose: true }],
],
};
27 changes: 0 additions & 27 deletions packages/adapter/index.js

This file was deleted.

44 changes: 38 additions & 6 deletions packages/adapter/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,66 @@
"license": "MIT",
"author": "",
"directories": {},
"scripts": {},
"scripts": {
"build": "rollup --config && babel ./addon --out-dir addon --plugins=../private-build-infra/src/transforms/babel-plugin-transform-ext.js",
"start": "rollup --config --watch",
"prepack": "pnpm build",
"prepare": "pnpm build"
},
"ember-addon": {
"main": "addon-main.js",
"type": "addon",
"version": 1
},
"files": [
"addon-main.js",
"addon"
],
"peerDependencies": {
"@ember-data/store": "workspace:4.10.0-alpha.4",
"@ember/string": "^3.0.0",
"ember-inflector": "^4.0.2"
},
"dependenciesMeta": {
"@ember-data/canary-features": {
"injected": true
},
"@ember-data/private-build-infra": {
"injected": true
}
},
"dependencies": {
"@ember-data/private-build-infra": "workspace:4.10.0-alpha.4",
"@ember/edition-utils": "^1.2.0",
"@embroider/macros": "^1.10.0",
"ember-auto-import": "^2.5.0",
"ember-cli-babel": "^7.26.11",
"ember-cli-test-info": "^1.0.0"
},
"devDependencies": {
"webpack": "^5.75.0"
"@babel/core": "^7.20.2",
"@babel/cli": "^7.19.3",
"@glimmer/component": "^1.1.2",
"ember-source": "~4.8.2",
"@embroider/addon-dev": "^2.0.0",
"rollup": "^3.2.3",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-private-methods": "^7.18.6",
"@babel/plugin-proposal-decorators": "^7.20.0",
"@babel/plugin-transform-typescript": "^7.20.0",
"@babel/plugin-transform-runtime": "^7.19.6",
"@babel/preset-typescript": "^7.18.6",
"@babel/preset-env": "^7.19.4",
"@babel/runtime": "^7.20.0",
"@rollup/plugin-babel":"^6.0.2",
"@rollup/plugin-node-resolve": "^15.0.1",
"tslib": "^2.4.0",
"walk-sync": "^3.0.0",
"typescript": "^4.8.4"
},
"engines": {
"node": "^14.8.0 || 16.* || >= 18.*"
},
"ember-addon": {},
"volta": {
"extends": "../../package.json"
},
"packageManager": "[email protected]"
}
}
46 changes: 46 additions & 0 deletions packages/adapter/rollup.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { Addon } from '@embroider/addon-dev/rollup';
import babel from '@rollup/plugin-babel';
import { nodeResolve } from '@rollup/plugin-node-resolve';

const addon = new Addon({
srcDir: 'src',
destDir: 'addon',
});

export default {
// This provides defaults that work well alongside `publicEntrypoints` below.
// You can augment this if you need to.
output: addon.output(),

external: [
'@embroider/macros',
'@ember/service',
'require',
'rsvp',
'ember-inflector',
'@ember/debug',
'@ember/string',
'@ember/object',
'@ember/error',
'@ember/object/mixin',
'@ember/application',
'@glimmer/env',
'@ember/runloop',
'@ember/polyfills',
],

plugins: [
// These are the modules that users should be able to import from your
// addon. Anything not listed here may get optimized away.
addon.publicEntrypoints(['index.js', 'error.js', 'json-api.js', 'rest.js', '-private.js']),

nodeResolve({ extensions: ['.ts', '.js'] }),
babel({
extensions: ['.ts', '.js'],
babelHelpers: 'runtime', // we should consider "external",
}),

// Remove leftover build artifacts when starting a new build.
addon.clean(),
],
};
Loading

0 comments on commit 820cf8c

Please sign in to comment.