{"map":"{\"version\":3,\"file\":\"orderby.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/select/orderby.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,MAAM,EAAmB,MAAM,UAAU,CAAC;AAEnD,MAAM,UAAU,YAAY,CAC1B,OAAmC,EACnC,UAAiB;IAEjB,UAAU,CAAC,OAAO,CAAC,UAAA,OAAO;QACxB,MAAM,CACJ,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAClC,iDAAiD,CAClD,CAAC;QAEF,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,KAAK;YACzB,OAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAA9D,CAA8D,CAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAuC,EACvC,UAAiB;IAEjB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAC,IAAI,EAAE,IAAI;QAC1B,OAAO,UAAU,CAAC,MAAM,CAAS,UAAC,MAAM,EAAE,OAAO;YAC/C,IAAI,MAAM,KAAK,CAAC,EAAE;gBAChB,+DAA+D;gBAC/D,gEAAgE;gBAChE,yDAAyD;gBACzD,qCAAqC;gBACrC,OAAO,MAAM,CAAC;aACf;YAED,IAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAElC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC7B,MAAM,GAAG,CAAC,CAAC,CAAC;aACb;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE;gBACpC,MAAM,GAAG,CAAC,CAAC;aACZ;iBAAM;gBACL,MAAM,GAAG,CAAC,CAAC;aACZ;YAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE;gBAC3C,MAAM,GAAG,CAAC,MAAM,CAAC;aAClB;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC\"}","code":"import { assert } from '../utils';\r\nexport function applyOrderBy(queries, astOrderBy) {\r\n    astOrderBy.forEach(function (orderBy) {\r\n        assert(orderBy.expr.type === 'column_ref', 'ORDER BY only supports ordering by field names.');\r\n        queries = queries.map(function (query) {\r\n            return query.orderBy(orderBy.expr.column, orderBy.type.toLowerCase());\r\n        });\r\n    });\r\n    return queries;\r\n}\r\nexport function applyOrderByLocally(docs, astOrderBy) {\r\n    return docs.sort(function (doc1, doc2) {\r\n        return astOrderBy.reduce(function (result, orderBy) {\r\n            if (result !== 0) {\r\n                // We already found a way to sort these 2 documents, so there's\r\n                // no need to keep going. This doesn't actually break out of the\r\n                // reducer but prevents doing any further unnecessary and\r\n                // potentially expensive comparisons.\r\n                return result;\r\n            }\r\n            var field = orderBy.expr.column;\r\n            if (doc1[field] < doc2[field]) {\r\n                result = -1;\r\n            }\r\n            else if (doc1[field] > doc2[field]) {\r\n                result = 1;\r\n            }\r\n            else {\r\n                result = 0;\r\n            }\r\n            if (orderBy.type === 'DESC' && result !== 0) {\r\n                result = -result;\r\n            }\r\n            return result;\r\n        }, 0);\r\n    });\r\n}\r\n//# sourceMappingURL=orderby.js.map","dts":{"name":"C:/www/npm-packages/fire-sql/dist/types/select/orderby.d.ts","writeByteOrderMark":false,"text":"export declare function applyOrderBy(queries: firebase.firestore.Query[], astOrderBy: any[]): firebase.firestore.Query[];\r\nexport declare function applyOrderByLocally(docs: firebase.firestore.DocumentData[], astOrderBy: any[]): firebase.firestore.DocumentData[];\r\n"}}
