@ember-data/tracking 4.8.6 → 4.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/-private.js +2 -0
- package/dist/-private.js.map +1 -1
- package/package.json +1 -1
package/dist/-private.js
CHANGED
|
@@ -29,6 +29,7 @@ function flushTransaction() {
|
|
|
29
29
|
cb();
|
|
30
30
|
});
|
|
31
31
|
transaction.props.forEach(obj => {
|
|
32
|
+
// mark this mutation as part of a transaction
|
|
32
33
|
obj.t = true;
|
|
33
34
|
obj.ref = null;
|
|
34
35
|
});
|
|
@@ -46,6 +47,7 @@ async function untrack() {
|
|
|
46
47
|
cb();
|
|
47
48
|
});
|
|
48
49
|
transaction.props.forEach(obj => {
|
|
50
|
+
// mark this mutation as part of a transaction
|
|
49
51
|
obj.t = true;
|
|
50
52
|
obj.ref = null;
|
|
51
53
|
});
|
package/dist/-private.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"-private.js","sources":["../src/-private.ts"],"sourcesContent":["/**\n * @module @ember-data/tracking\n */\ntype OpaqueFn = (...args: unknown[]) => unknown;\ntype Tag = { ref: null; t: boolean };\ntype Transaction = {\n cbs: Set<OpaqueFn>;\n props: Set<Tag>;\n sub: Set<Tag>;\n parent: Transaction | null;\n};\nlet TRANSACTION: Transaction | null = null;\n\nfunction createTransaction() {\n let transaction: Transaction = {\n cbs: new Set(),\n props: new Set(),\n sub: new Set(),\n parent: null,\n };\n if (TRANSACTION) {\n transaction.parent = TRANSACTION;\n }\n TRANSACTION = transaction;\n}\n\nexport function subscribe(obj: Tag): void {\n if (TRANSACTION) {\n TRANSACTION.sub.add(obj);\n } else {\n obj.ref;\n }\n}\n\nfunction flushTransaction() {\n let transaction = TRANSACTION!;\n TRANSACTION = transaction.parent;\n transaction.cbs.forEach((cb) => {\n cb();\n });\n transaction.props.forEach((obj: Tag) => {\n obj.t = true;\n obj.ref = null;\n });\n transaction.sub.forEach((obj: Tag) => {\n obj.ref;\n });\n}\nasync function untrack() {\n let transaction = TRANSACTION!;\n TRANSACTION = transaction.parent;\n\n // defer writes\n await Promise.resolve();\n transaction.cbs.forEach((cb) => {\n cb();\n });\n transaction.props.forEach((obj: Tag) => {\n obj.t = true;\n obj.ref = null;\n });\n}\n\nexport function addToTransaction(obj: Tag): void {\n if (TRANSACTION) {\n TRANSACTION.props.add(obj);\n } else {\n obj.ref = null;\n }\n}\nexport function addTransactionCB(method: OpaqueFn): void {\n if (TRANSACTION) {\n TRANSACTION.cbs.add(method);\n } else {\n method();\n }\n}\n\n/**\n * Run `method` without subscribing to any tracked properties\n * controlled by EmberData.\n *\n * This should rarely be used except by libraries that really\n * know what they are doing. It is most useful for wrapping\n * certain kinds of fetch/query logic from within a `Resource`\n * `hook` or other similar pattern.\n *\n * @function untracked\n * @public\n * @param method\n * @returns result of invoking method\n */\nexport function untracked<T extends OpaqueFn>(method: T): ReturnType<T> {\n createTransaction();\n const ret = method();\n void untrack();\n return ret as ReturnType<T>;\n}\n\n/**\n *\n * @function transact\n * @public\n * @param method\n * @returns result of invoking method\n */\nexport function transact<T extends OpaqueFn>(method: T): ReturnType<T> {\n createTransaction();\n const ret = method();\n flushTransaction();\n return ret as ReturnType<T>;\n}\n\n/**\n *\n * @method memoTransact\n * @public\n * @param method\n * @returns a function that will invoke method in a transaction with any provided args and return its result\n */\nexport function memoTransact<T extends OpaqueFn>(method: T): (...args: unknown[]) => ReturnType<T> {\n return function (...args: unknown[]) {\n createTransaction();\n const ret = method(...args);\n flushTransaction();\n return ret as ReturnType<T>;\n };\n}\n"],"names":["TRANSACTION","createTransaction","transaction","cbs","Set","props","sub","parent","subscribe","obj","add","ref","flushTransaction","forEach","cb","t","untrack","Promise","resolve","addToTransaction","addTransactionCB","method","untracked","ret","transact","memoTransact","args"],"mappings":"AAAA;AACA;AACA;;AASA,IAAIA,WAA+B,GAAG,IAAI,CAAA;AAE1C,SAASC,iBAAiB,GAAG;AAC3B,EAAA,IAAIC,WAAwB,GAAG;IAC7BC,GAAG,EAAE,IAAIC,GAAG,EAAE;IACdC,KAAK,EAAE,IAAID,GAAG,EAAE;IAChBE,GAAG,EAAE,IAAIF,GAAG,EAAE;AACdG,IAAAA,MAAM,EAAE,IAAA;GACT,CAAA;AACD,EAAA,IAAIP,WAAW,EAAE;IACfE,WAAW,CAACK,MAAM,GAAGP,WAAW,CAAA;AAClC,GAAA;AACAA,EAAAA,WAAW,GAAGE,WAAW,CAAA;AAC3B,CAAA;AAEO,SAASM,SAAS,CAACC,GAAQ,EAAQ;AACxC,EAAA,IAAIT,WAAW,EAAE;AACfA,IAAAA,WAAW,CAACM,GAAG,CAACI,GAAG,CAACD,GAAG,CAAC,CAAA;AAC1B,GAAC,MAAM;AACLA,IAAAA,GAAG,CAACE,GAAG,CAAA;AACT,GAAA;AACF,CAAA;AAEA,SAASC,gBAAgB,GAAG;EAC1B,IAAIV,WAAW,GAAGF,WAAY,CAAA;EAC9BA,WAAW,GAAGE,WAAW,CAACK,MAAM,CAAA;AAChCL,EAAAA,WAAW,CAACC,GAAG,CAACU,OAAO,CAAEC,EAAE,IAAK;AAC9BA,IAAAA,EAAE,EAAE,CAAA;AACN,GAAC,CAAC,CAAA;AACFZ,EAAAA,WAAW,CAACG,KAAK,CAACQ,OAAO,CAAEJ,GAAQ,IAAK;
|
|
1
|
+
{"version":3,"file":"-private.js","sources":["../src/-private.ts"],"sourcesContent":["/**\n * @module @ember-data/tracking\n */\ntype OpaqueFn = (...args: unknown[]) => unknown;\ntype Tag = { ref: null; t: boolean };\ntype Transaction = {\n cbs: Set<OpaqueFn>;\n props: Set<Tag>;\n sub: Set<Tag>;\n parent: Transaction | null;\n};\nlet TRANSACTION: Transaction | null = null;\n\nfunction createTransaction() {\n let transaction: Transaction = {\n cbs: new Set(),\n props: new Set(),\n sub: new Set(),\n parent: null,\n };\n if (TRANSACTION) {\n transaction.parent = TRANSACTION;\n }\n TRANSACTION = transaction;\n}\n\nexport function subscribe(obj: Tag): void {\n if (TRANSACTION) {\n TRANSACTION.sub.add(obj);\n } else {\n obj.ref;\n }\n}\n\nfunction flushTransaction() {\n let transaction = TRANSACTION!;\n TRANSACTION = transaction.parent;\n transaction.cbs.forEach((cb) => {\n cb();\n });\n transaction.props.forEach((obj: Tag) => {\n // mark this mutation as part of a transaction\n obj.t = true;\n obj.ref = null;\n });\n transaction.sub.forEach((obj: Tag) => {\n obj.ref;\n });\n}\nasync function untrack() {\n let transaction = TRANSACTION!;\n TRANSACTION = transaction.parent;\n\n // defer writes\n await Promise.resolve();\n transaction.cbs.forEach((cb) => {\n cb();\n });\n transaction.props.forEach((obj: Tag) => {\n // mark this mutation as part of a transaction\n obj.t = true;\n obj.ref = null;\n });\n}\n\nexport function addToTransaction(obj: Tag): void {\n if (TRANSACTION) {\n TRANSACTION.props.add(obj);\n } else {\n obj.ref = null;\n }\n}\nexport function addTransactionCB(method: OpaqueFn): void {\n if (TRANSACTION) {\n TRANSACTION.cbs.add(method);\n } else {\n method();\n }\n}\n\n/**\n * Run `method` without subscribing to any tracked properties\n * controlled by EmberData.\n *\n * This should rarely be used except by libraries that really\n * know what they are doing. It is most useful for wrapping\n * certain kinds of fetch/query logic from within a `Resource`\n * `hook` or other similar pattern.\n *\n * @function untracked\n * @public\n * @param method\n * @returns result of invoking method\n */\nexport function untracked<T extends OpaqueFn>(method: T): ReturnType<T> {\n createTransaction();\n const ret = method();\n void untrack();\n return ret as ReturnType<T>;\n}\n\n/**\n *\n * @function transact\n * @public\n * @param method\n * @returns result of invoking method\n */\nexport function transact<T extends OpaqueFn>(method: T): ReturnType<T> {\n createTransaction();\n const ret = method();\n flushTransaction();\n return ret as ReturnType<T>;\n}\n\n/**\n *\n * @method memoTransact\n * @public\n * @param method\n * @returns a function that will invoke method in a transaction with any provided args and return its result\n */\nexport function memoTransact<T extends OpaqueFn>(method: T): (...args: unknown[]) => ReturnType<T> {\n return function (...args: unknown[]) {\n createTransaction();\n const ret = method(...args);\n flushTransaction();\n return ret as ReturnType<T>;\n };\n}\n"],"names":["TRANSACTION","createTransaction","transaction","cbs","Set","props","sub","parent","subscribe","obj","add","ref","flushTransaction","forEach","cb","t","untrack","Promise","resolve","addToTransaction","addTransactionCB","method","untracked","ret","transact","memoTransact","args"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ember-data/tracking",
|
|
3
3
|
"description": "Tracking Primitives for controlling change notification of Tracked properties when working with EmberData",
|
|
4
|
-
"version": "4.8.
|
|
4
|
+
"version": "4.8.7",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Chris Thoburn <runspired@users.noreply.github.com>",
|